当我使用DotNet1.1时,我曾遇到过C#的这个问题。
问题是这样的。我有一个非托管dll,其中有一个函数需要一个函数指针(以及其他参数)。当我在C#代码中声明DLLImport时,我传递了一个委托。但是C#中的委托具有stdcall
调用约定,而非托管函数期望cdecl
函数指针。因此,我的幼稚做法导致了崩溃。然后我发现了以下内容:http://www.codeproject.com/KB/cs/cdeclcallback.aspx 一些人编写了一个优秀的库,通过我理解的MSIL-hacking技术可以改变委托的调用约定。事情进行得很顺利,直到...
我升级到VS2008和新版本的.NET。在这个版本下,上述库不起作用了。我不是C#或.NET专家,说实话,我几乎不理解他的库是做什么的(尽管它是开源的),所以我甚至不想尝试将其适配到新的.NET版本。然而,我希望较新版本的C#有一些更好的解决方案来解决我的问题。
因此,SO专家们,请帮助我解决我的烦恼 :)