设为首页 - 加入收藏 ASP站长网(Aspzz.Cn)- 科技、建站、经验、云计算、5G、大数据,站长网!
热搜: 创业者 手机 数据
当前位置: 首页 > 服务器 > 系统 > 正文

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

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

(编辑:ASP站长网)

    网友评论
    推荐文章
      热点阅读