我已經創建了一個DLL函數,用於在C#中使用DLLImport但在調用該方法時遇到問題,因爲我收到內存損壞問題;好奇的DllImport問題,當傳遞LONG參數內存損壞
[DllImport("mydll.dll", EntryPoint = "callinmydll")]
public static extern int testdllcall(double *firstinput, long firstcount, double *secondoutput, long secondcount);
這是C++庫頭的一部分;
extern "C" {
mydll_API int callinmydll(double *in, long firstcount, double *out, long secondcount);
}
執行。
mydll_API int callinmydll(double *in, long firstcount, double *out, long secondcount)
{
for(int i =0 ; i < 10 ; i++)
{
*(out + i) = (*(in + i) + 10);
}
return 0;
}
現在,當我dllimport的函數調用callinmydll功能和有效的數據傳遞給它,這就是事情變得有趣。與firstcount一樣,指針包含數據。儘管超出這一點的所有內容都已損壞。爲什麼?奇怪的是我重新排列我的功能是雙重,double *,long,long現在腐敗發生在第三個參數後面。我很好奇發生了什麼,因爲我傳遞了有效的數據;兩個有效的指針,並將int轉換爲int64。
幫助!
不能確定,但不是在C++長更像是在C#中,即-2147483647到2147483647 –
一個int調用約定也不相符。 –