c#调用c++开发的dll const char* 返回值接收问题
2015-12-08 09:27
627 查看
原文:c#调用c++开发的dll const char* 返回值接收问题用c#调用视频接口相关的dll,dll使用c++开发。
c++接口定义如下:
c#接口定义如下:
遇到的问题及解决方法:
1、在c#调用时一开始 CharSet = CharSet.Ansi 没有定义 出现过乱码。c++中的编码为ansi,c#默认可能是Unicode。这里需要注意一下。
2、对于c++ 返回值类型为 const char* 我一开始用String 接收,在framework4.0下也成功过,但有时成功,有时失败。在framework2.0下,从来没成功过。后来改用指针接收,成功接收了。
c++接口定义如下:
PLATFORM const char* Plat_GetValueStr(const char* propertyName, int iUserHandle);
c#接口定义如下:
[DllImport(@"Platform.dll", EntryPoint = "Plat_GetValueStr", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.Cdecl)] extern static IntPtr Plat_GetValueStr(string propertyName, int iUserHandle);
遇到的问题及解决方法:
1、在c#调用时一开始 CharSet = CharSet.Ansi 没有定义 出现过乱码。c++中的编码为ansi,c#默认可能是Unicode。这里需要注意一下。
2、对于c++ 返回值类型为 const char* 我一开始用String 接收,在framework4.0下也成功过,但有时成功,有时失败。在framework2.0下,从来没成功过。后来改用指针接收,成功接收了。
IntPtr ipName = Plat_GetValueStr(ConstControlUnit.ControlUnitName, iUserHandle); ResName= Marshal.PtrToStringAnsi(ipName);
相关文章推荐
- 详解C++中命名空间的意义和用法
- c#调用c++开发的dll const char* 返回值接收问题
- dumpbin命令查看dll导出函数
- c语言:易错的if语句
- c语言:条件表达式的应用
- c语言:&&和||的关系
- c语言:0的按位取反结果
- C语言数据类型——结构类型
- c语言:sizeof的使用,其不是函数,是一个操作符关键字,定义一个数组arr,输出arr和&arr的区别
- c语言:按如下方式输出You are handsome!,每到下一行,就替换掉两边上的字符
- c语言:C语言清空输入缓冲区在标准输入(stdin)情况下的使用
- C语言程序设计整理(2)
- 单词识别 c++ primer plus 第六章变成练习 第7题
- c++ primer plus 第六章变成练习 第7题
- 浅谈C语言中scanf(),gets()函数区别与联系
- c++初始化成员列表
- 找第二大的数
- Parse Generator + Visual Studio 2013配置方法
- c++ primer plus 第六章变成练习 第4题
- Effective C++读书笔记