我已经创建了一个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调用约定也不相符。 –