1
我試圖編寫一個簡單函數來從託管代碼調用非託管代碼。數據類型是int(這應該使它更簡單)。該功能是本Int值無法在託管代碼和非託管代碼之間正確編組
extern "C" MYTEST_API int myTestFunction(int a, int b)
{
return a*b;
}
託管代碼看起來像
[DllImport("myTest.dll", CallingConvention = CallingConvention.Cdecl)]
private static extern int myTestFunction(int a, int b);
...
int p1 = 2;
int p2 = 3;
int result = myTestFunction(p1, p2);
Console.WriteLine("C++ int: " + result);
當我運行程序,結果返回爲
C++ int: 12977616
所以,我不知道什麼是錯怎麼辦我聲明或傳遞int參數。我嘗試傳遞參數爲「單一」,該版本的工作。
正確檢查您的C++代碼。也許你錯過了一些東西,因爲這種映射是正確的。如果Single爲你工作 - 它可能是C++代碼中的錯誤,因爲Single和Int在內存中非常不同,並且不能彼此映射 – Archeg 2012-03-21 13:42:17