我该如何正确地从非托管DLL到C#返回一个char *?我该、正确地、char、DLL

由网友(柚旅时光机)分享简介:函数签名:char * errMessage(int err);我的code:My code: [DllImport("api.dll")] internal static extern char[] errMessage(int err);...char[] message = errMessag...

函数签名:


char * errMessage(int err);

我的code:

My code:


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

这将返回错误:


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

我是什么做错了吗?感谢您的帮助。

What am I doing wrong? Thanks for any help.

推荐答案

试试这个:

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

我相信C#是足够的智慧来处理指针,并返回一个字符串。

I believe C# is smart enough to handle the pointer and return you a string.

编辑:添加MarshalAs特性

Added the MarshalAs attribute

阅读全文

相关推荐

最新文章