设为首页 - 加入收藏 华夏网 (http://www.hxwgxz.com)- 云主机,资讯,互联网,人工智能,云计算,大数据,区块链,VR,站长网!
热搜: 2019 google 中国 2020
当前位置: 主页 > 电商 > 正文

如何正确地将char *从非托管DLL返回到C#?

发布时间:2021-03-06 13:13 所属栏目:[电商] 来源:网络整理
导读:功能签名: char * errMessage(int err); 我的代码: [DllImport("api.dll")] internal static extern char[] errMessage(int err);...char[] message = errMessage(err); 这会返回一个错误: Cannot marshal 'return value': Invalid managed/unmanaged typ

功能签名:

char * errMessage(int err);

我的代码:

[DllImport("api.dll")]       
internal static extern char[] errMessage(int err);
...
char[] message = errMessage(err);

这会返回一个错误:

Cannot marshal 'return value': Invalid managed/unmanaged type combination.

我究竟做错了什么?谢谢你的帮助.

解决方法

试试这个:

[DllImport("api.dll")]
[return : MarshalAs(UnmanagedType.LPStr)]
internal static extern string errMessage(int err);
...
string message = errMessage(err);

我相信C#足够智能来处理指针并返回一个字符串.

编辑:添加了MarshalAs属性

【免责声明】本站内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。

网友评论
推荐文章