函数签名:
char * errMessage(int err);
我的代码:
[DllImport("api.dll")]
内部静态外部字符 [] errMessage(int err);
...
char[] message = errMessage(err);
这将返回一个错误:
无法编码(marshal)“返回值”:无效的托管/非托管类型组合。
我究竟做错了什么?谢谢你的帮助。
最佳答案
试试这个:
[DllImport("api.dll")]
[return : MarshalAs(UnmanagedType.LPStr)]
internal static extern string errMessage(int err);
...
string message = errMessage(err);
我相信 C# 足够聪明,可以处理指针并返回一个字符串。
编辑:添加了 MarshalAs 属性
关于c# - 如何正确地将 char * 从非托管 DLL 返回到 C#?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1757448/