加入收藏 | 设为首页 | 会员中心 | 我要投稿 核心网 (https://www.hxwgxz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 电商 > 正文

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

发布时间:2021-03-06 13:13:22 所属栏目:电商 来源:网络整理
导读:功能签名: 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属性

(编辑:核心网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读