日期:2014-05-19  浏览次数:20817 次

调用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;