C# 调DLL,字符串子针的问题
最近做视频前端,全是C++的DLL,于是用C#来调用,遇到这个问题。
//函数原型,(参数方向均是 out)
//BOOL VSNET_ClientReadMessage(char *m_sername,char *m_url)
[DllImport("NetClient.dll")]
public static extern bool VSNET_ClientReadMessage(out IntPtr m_sername, out IntPtr m_url)
在调用函数的时候,就是怎样把指向m_sername的值读出来。
我用了这个方法:
char[] a = new char[24];
Marshal.Copy(sername, a, 0, 24);
运行到这步就出错,m_sername到是有个值,77512061 ,估计是指向的内存地址
抛出异常:System.AccessViolationException
尝试读取或写入内存出错!
另外,用stringbuilder试过,传出来的值只有1个字符 'e',很奇怪。应该传出的值为 sername="video server"
======================================
该函数在VC++中使用的代码如下:
char sername[24];
char url[40];
if(!VSNET_ClientReadMessage(sername,url))
return;
//下面是具体处里代码,不贴了
找不出原因,发贴来问!!!
请教各位程序员朋友,帮个小忙 :)