我在使用一些已经用了很长时间的内容时遇到了奇怪的错误。可能是Visual Studio 2010中的新功能,但我不确定。
我试图从C#中调用一个用C++编写的未托管函数。
根据我在互联网上阅读的和错误消息本身的内容,它与我的C#文件中的签名与C++中的签名不同有关,但我确实看不出来。
首先,以下是我的未托管函数:
TEngine GCreateEngine(int width,int height,int depth,int deviceType);
以下是我的 C# 函数:
[DllImport("Engine.dll", EntryPoint = "GCreateEngine", CallingConvention = CallingConvention.StdCall)]
public static extern IntPtr CreateEngine(int width,int height,int depth,int device);
当我调试C++时,我可以看到所有的参数都很好,所以我只能认为它与从TEngine(它是指向名为CEngine的类的指针)转换为IntPtr有关。我之前在VS2008中使用过这个没有问题。