首页 新闻 会员 周边 捐助

C#调用C++DLL的问题

0
悬赏园豆:50 [已解决问题] 解决于 2013-02-27 21:42

我有一个c++写的DLL,可是参数有一个char **p,DLL导出的接口函数为GetClock(int pakbus_address,int device_type,char **return_data,int *return_data_len),return_data存储的是返回结果,请问在C#里如何调用这个函数得到我想要的返回值呢。

 

        [DllImport("simplepb.dll",EntryPoint = "GetClock")]
        public static extern int GetClock(int pakbus_address, int device_type, StringBuilder return_data, ref int return_data_len);

 

使用StringBuilder接收到的是乱码。

wzhwang的主页 wzhwang | 初学一级 | 园豆:45
提问于:2013-02-26 12:45
< >
分享
最佳答案
0

把你的函数声明写成这样。

public static extern  int GetClock(int pakbus_address, int device_type, ref System.IntPtr return_data, ref int return_data_len) ;

然后通过Marshal.PtrToStringAnsi函数获取返回的字符串试试。

string result = Marshal.PtrToStringAnsi(return_data);

收获园豆:50
天方 | 大侠五级 |园豆:5432 | 2013-02-26 13:27
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册