问题列表 - 第12339页

使用COM互操作编组从C++到C#的BSTR

我有一个用C++编写的进程外COM服务器,它由一些C#客户端代码调用.其中一个服务器接口上的方法将大型BSTR返回给客户端,我怀疑这会导致内存泄漏.该代码有效,但我正在寻找有关编组BSTR的帮助.

简化一下,服务器方法的IDL是

HRESULT ProcessRequest([in] BSTR request, [out] BSTR* pResponse);
Run Code Online (Sandbox Code Playgroud)

并且实现如下:

HRESULT MyClass::ProcessRequest(BSTR request, BSTR* pResponse)
{
    USES_CONVERSION;
    char* pszRequest = OLE2A(request);
    char* pszResponse = BuildResponse(pszRequest);
    delete pszRequest;
    *pResponse = A2BSTR(pszResponse);
    delete pszResponse;
    return S_OK;
}
Run Code Online (Sandbox Code Playgroud)

A2BSTR在内部使用SysAllocStringLen()分配BSTR.

在C#客户端中,我只需执行以下操作:

string request = "something";
string response = "";
myserver.ProcessRequest(request, out response);
DoSomething(response);
Run Code Online (Sandbox Code Playgroud)

这是有效的,因为请求字符串被发送到COM服务器并且正确的响应字符串被返回给C#客户端.但是每次往服务器的往返都会泄漏服务器进程中的内存.crt泄漏检测支持显示crt堆上没有重大泄漏,所以我怀疑泄漏是用IMalloc分配的.

我在这里做错了吗?我发现含糊的评论说'所有的参数必须用CoTaskMemAlloc分配,否则互操作编组将不会释放它'但没有细节.

安迪

c# c++ com interop atl

6
推荐指数
1
解决办法
4449
查看次数

php脚本403禁止错误

我有一个脚本给我错误403 Forbidden error,它只是另一个脚本的副本,但不同之处在于它们都使用另一个mysql类来访问数据库.

我的整个项目已经完成,这是最后一个文件,因此我不想再为单个文件完成整个工作.

服务器日志显示客户端被服务器配置拒绝:

我应该寻找什么?

我尝试过以下方法:

  • 权限是644
  • 只有简单回声的新文件也给出了403
  • 更改了文件夹的名称

但是,index.php效果很好.

php permissions webserver ownership

9
推荐指数
2
解决办法
5万
查看次数

将C#属性读入JQuery代码

我正在尝试从我的代码隐藏文件中读取C#属性的值到一些JQuery脚本(见下文).我编写的JQuery选择器访问ASP.Net GridView,然后访问gridview中的CheckBox字段.每当选中或取消选中复选框时,代码都会被命中,但我需要从后面的代码中访问C#属性,以根据属性的值采取适当的操作.

    $(".AspNet-GridView-Normal > td > input").click(function() {

        //Need to access the C# property here

        //Take action here based on the value of the C# property

     });
Run Code Online (Sandbox Code Playgroud)

c# asp.net jquery properties

6
推荐指数
1
解决办法
1万
查看次数

JSONP的解释和用法

可能重复:
请解释JSONP

什么是JSONP,为什么需要它,以及它的用法是什么样的现实世界的例子.

ajax json jsonp

8
推荐指数
1
解决办法
5018
查看次数

当方法中有Lambda表达式时,为什么不能编辑并继续调试?

我在其他问题中看到它说Linq查询语法编译为Lambda.

那么为什么在方法中有Lambda表达式时你不能进行编辑和继续,而使用查询表示法可以吗?

什么是最令人愤怒的,并且认真地让我考虑切换到在任何地方使用查询表示法,即使你的代码不在Lambda中,但是在同一方法中的其他地方有一个Lambda,你不能编辑并继续!这就像是对粗心的开发人员造成的无端痛苦!

c# linq lambda edit-and-continue

27
推荐指数
1
解决办法
5616
查看次数

如何开始单元测试?

我知道单元测试是可取的,我有兴趣进行单元测试.唯一的问题是我不知道如何,甚至从哪里开始.所以我的问题是:我如何了解并开始单元测试?具体来说,我经常在Visual Studio中使用NetBeans和C#代码编写Java代码,并且对使用什么工具以及如何弄湿我感兴趣.任何人都可以为绝对单位测试n00b提供任何建议吗?

我知道那里有很多有些类似的问题,但我对它为什么以及对如何更感兴趣不太感兴趣.

junit nunit unit-testing netbeans visual-studio

6
推荐指数
3
解决办法
764
查看次数

在没有它的机器上忽略OpenMP

我有一个使用OpenMP的C++程序,它将运行在可能安装或未安装OpenMP的几台机器上.

如果机器没有OpenMP并忽略那些#include <omp.h>,OpenMP指令(如#pragma omp parallel ...)和/或库函数(如tid = omp_get_thread_num();),我怎么能知道我的程序?

c c++ ignore openmp

29
推荐指数
3
解决办法
2万
查看次数

有没有办法检测对象是否被锁定?

有没有办法确定对象是否在C#中被锁定?我有一个不值得羡慕的位置,通过设计,我从一个类中的队列中读取,我需要将内容转储到类中的集合中.但是该集合也是从类外的接口读/写的.所以很明显可能存在集合写入的情况,就像我想要写入它一样.

我可以围绕它进行编程,比如说使用委托,但它会很难看.

multithreading c#-3.0

46
推荐指数
5
解决办法
3万
查看次数

事件日志文件已满

尝试从控制台应用程序写入事件日志时,我不断收到此错误消息.这是我写给它的方式

public static void WriteToEventLog(Exception ex)
    {
        string mySource = "Export Task";
        if (!EventLog.SourceExists(mySource))
            EventLog.CreateEventSource(mySource, "Application");

        EventLog myLog = new EventLog();
        myLog.Source = mySource;

        myLog.WriteEntry(ex.ToString());

    }
Run Code Online (Sandbox Code Playgroud)

有谁知道为什么会这样,以及我如何解决它?

.net event-log

3
推荐指数
3
解决办法
2万
查看次数

从两个应用程序创建"通用二进制"?

简短的问题:你如何使用两个应用程序,一个用于英特尔和另一个ppc,并将它们打包成一个通用二进制文件?

我目前对这个问题的看法:

我已阅读有关通用二进制文件的Apple开发人员文档,但未能找到答案,因此可能无法实现.

由于我不会进入这里的原因,我有两个程序的应用程序(通常使用xtools来编译二进制文件),一个用于Intel Macs,另一个用于Mac> = 10.3.9在PPC上运行.共享资源不是问题.

我可以将MyProg_intel.app和MyProg_ppc.app放入一个zip并以这种方式分发; 但这可能会导致我将分发我的程序的许多人感到困惑.

macos xcode universal-binary

5
推荐指数
2
解决办法
3165
查看次数