我使用下面的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嗎? –