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 中。
其他信息: 尝试读取或写入受保护的内存。这通常指示其他内存已损坏。
请高手指点迷津,如果能帮忙写个类似这个指针的传递实例就最好了,万分感谢!
展开
 我来答
超大蒲公英
2015-09-07 · TA获得超过741个赞
知道小有建树答主
回答量:758
采纳率:75%
帮助的人:741万
展开全部
public static extern bool Gnd_shuzu(String filename,float[] aa);
改成这样
追问
没用
追答

这是我自己的测试结果。

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式