C# 调用 C++ dll string 数据类型匹配问题 求高手搭救 100
C++中的函数原型为:intInitScreenLib(intiRow,intiCol,stringsCom,intiProtocol)C#调用:[DllImport(x...
C++ 中的函数原型为:int InitScreenLib(int iRow, int iCol, string sCom, intiProtocol)
C#调用:
[DllImport(xxx.dll)]
public static extern int InitScreenLib(int iRow, int iCol, ?? sCom, int iProtocol);
请问第三个参数应该写什么数据类型?? 试过了string 和 StringBuilder 都不行
sCom 在C++ 里边就是以 string 类型定义的 不是char * 展开
C#调用:
[DllImport(xxx.dll)]
public static extern int InitScreenLib(int iRow, int iCol, ?? sCom, int iProtocol);
请问第三个参数应该写什么数据类型?? 试过了string 和 StringBuilder 都不行
sCom 在C++ 里边就是以 string 类型定义的 不是char * 展开
2个回答
展开全部
应该是String,不过你在调用的时候可以加上调用约定试试?
[DllImport("xxx.dll", CharSet = CharSet.Ansi)]
public static extern int InitScreenLib(int iRow, int iCol, string sCom, int iProtocol);
还有你说的不行是什么情况?是调用失败,还是显示的结果不正常?
[DllImport("xxx.dll", CharSet = CharSet.Ansi)]
public static extern int InitScreenLib(int iRow, int iCol, string sCom, int iProtocol);
还有你说的不行是什么情况?是调用失败,还是显示的结果不正常?
追问
调用失败 程序死在里边了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
还是string啊
追问
不是string
追答
看看你C++的代码 ,可能C++里返回的是char*,让他返回WCHAR*
参考一下:http://blog.csdn.net/caowei880123/article/details/6387839
http://blog.csdn.net/shilogic/article/details/7027360
C#调用C++的DLL时,参数传递便成了一个问题。今天我碰到的一个问题是,在C++中导出的函数的参数是string类型的,在C#中通过string的参数调用时,便会出现该内存已损坏或不能读取的异常信息。后来我把C++的导出函数的参数由string改为LPTSTR类型,也即char*类型,然后在C#中对应的参数改为StringBuilder类型,既解决了传进去的参数问题,又解决了传出参数的问题。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询