博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
c#调用c++开发的dll const char* 返回值接收问题
阅读量:6426 次
发布时间:2019-06-23

本文共 677 字,大约阅读时间需要 2 分钟。

原文:

用c#调用视频接口相关的dll,dll使用c++开发。

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);

 

转载地址:http://bjyga.baihongyu.com/

你可能感兴趣的文章
EventLoop(netty源码死磕4)
查看>>
#17 HABTM Checkboxes
查看>>
如何修改WordPress自带标签云小工具的显示参数
查看>>
在MyEclipse下使用JUnit
查看>>
Hashtable的使用
查看>>
n&(n-1)的妙用
查看>>
嵌入式ARM系统实战开发视频教程
查看>>
iOS开发篇--OC 过程式编程讲解
查看>>
java学习笔记4
查看>>
ELK之logstash系统日志和nginx,tomcat日志收集-4
查看>>
Maven学习总结(十)——使用Maven编译项目gbk的不可映射问题
查看>>
阶梯流程图在PowerPoint2013中如何制作?工作总结ppt模板
查看>>
Java基础学习总结(9)——this关键字
查看>>
Maven学习总结(四)——Maven核心概念
查看>>
Java基础学习总结(23)——GUI编程
查看>>
C/C++的类型转换
查看>>
Maven学习总结(七)——eclipse中使用Maven创建Web项目
查看>>
如何创建泛型数组
查看>>
创建Winodws 2008 R2 SP1 群集
查看>>
MYSQL的几种备份方法
查看>>