调用c++组件问题
c++写的组件里有一个 void的函数,参数是 in/out 类型的。
我在c#里定义一个 static 的 string a,调用这个函数后,a的值却没有发生改变。
调用该组件里其他有返回值的函数是可以得到返回值的。
请问这是什么原因呢?
------解决方案--------------------1、检查a在函数体内是否真的有变化
2、把a传递给其他函数,看看是否a有变化
这样就确定问题在传递方,还是接受方的函数有问题了
============================================
技术交流不该有界限 资源共享不该有条件
http://blog.csdn.net/lovingkiss
http://download.csdn.net/user/lovingkiss
Email:loving-kiss@163.com
本人说明: <我的帖子我做主>
1、欢迎一切问题有关的交流——无论答案对错;
2、不欢迎 顶、Mark、支持之类口水混分的人;
我保留对非 <散分贴> 蹭分者的厌恶和鄙视...
精通:jīnɡtōnɡ对学问技术等透彻的了解并熟练掌握
所以,我没有精通,只有JZ
============================================
------解决方案--------------------You may call the procedure as following:
public static extern void(..., out a, ...)
------解决方案--------------------如果在C中是指针类型,就要使用 byte[] msg,如下:
public static extern void(..., byte[] msg),
然后 a = System.Text.Encoding.Default.GetString(msg);
------解决方案--------------------不会C++,帮顶
------解决方案--------------------试试
添加
using System.Runtime.InteropServices;
假设你的dll为NetSpy.dll 你的函数名为GetStr(char* a)
[DllImport( "NetSpy.dll ", CharSet=CharSet.Ansi)]
public static extern void GetStr(ref string a);
------解决方案--------------------using System.Runtime.InteropServices;