我使用下面的DllImport:参数从C#代码错误地传递到C++ DLL
[DllImport(@"someDLL.dll", CallingConvention = CallingConvention.Cdecl)]
private static extern UINT64 someFunc(int arga, int argb, int argc);
我打电话的功能如下:
someFunc(0,0,1);
H中的文件I声明函数:
extern "C" __declspec(dllexport) UINT64 someFunc(int arga, int argb, int argc);
CPP:
UINT64 someFunc(int arga, int argb, int argc)
{
...
}
在C++代码中,我收到奇怪的值(例如1218628,20140292,1219020)。
任何想法为什么?
您可以看到C#代码和C++代码,但无法解决这个问题。您希望我们只能从C#代码中完成它是不公平的。你在interop上标记了它,这意味着互操作有两个方面。你为什么拒绝我们进入其中一方? –
添加的代码c –
这是一个会员函馆?如果没有,那么我可以看到没有错。 C++肯定使用cdecl吗? –