C#怎样调用C++写的dll
我用C++写了个dll,dll里有2个函数,一个是jianfa(floatx,floaty),另一个是boolreadradr(char*filename,float*a...
我用C++写了个dll,dll里有2个函数,一个是jianfa(float x,float y),另一个是
bool readradr(char *filename,float *aa)
{ aa[0] =99; return 1; },
用C++程序调用dll中的2个函数都没问题,但是到了C#中就出问题了。
[DllImport("ShowDlg.dll")]
public static extern int Gnd_setparm(float x, float y); //减法函数
[DllImport("ShowDlg.dll")]
unsafe public static extern bool Gnd_shuzu(StringBuilder filename, ref float[] aa);
以上是函数申明。在主函数中调用语句是:
a = mfcdll.Gnd_setparm(1, 5); //运行成功,调用成功
textBox1.Text = a.ToString(); //运行成功
StringBuilder str = new StringBuilder("RadarStatus_201504062147.dat");
float[] arr= new float[5]{0,0,0,0,0};
mfcdll.Gnd_shuzu(str ,ref arr ); //此句运行失败,报错,错误信息为:
System.AccessViolationException”类型的未经处理的异常出现在 mfcdll.exe 中。
其他信息: 尝试读取或写入受保护的内存。这通常指示其他内存已损坏。
请高手指点迷津,如果能帮忙写个类似这个指针的传递实例就最好了,万分感谢! 展开
bool readradr(char *filename,float *aa)
{ aa[0] =99; return 1; },
用C++程序调用dll中的2个函数都没问题,但是到了C#中就出问题了。
[DllImport("ShowDlg.dll")]
public static extern int Gnd_setparm(float x, float y); //减法函数
[DllImport("ShowDlg.dll")]
unsafe public static extern bool Gnd_shuzu(StringBuilder filename, ref float[] aa);
以上是函数申明。在主函数中调用语句是:
a = mfcdll.Gnd_setparm(1, 5); //运行成功,调用成功
textBox1.Text = a.ToString(); //运行成功
StringBuilder str = new StringBuilder("RadarStatus_201504062147.dat");
float[] arr= new float[5]{0,0,0,0,0};
mfcdll.Gnd_shuzu(str ,ref arr ); //此句运行失败,报错,错误信息为:
System.AccessViolationException”类型的未经处理的异常出现在 mfcdll.exe 中。
其他信息: 尝试读取或写入受保护的内存。这通常指示其他内存已损坏。
请高手指点迷津,如果能帮忙写个类似这个指针的传递实例就最好了,万分感谢! 展开
1个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询