小编Bra*_*don的帖子

PInvoke for C函数返回char*

我正在尝试编写一些从非托管DLL调用方法的C#代码.dll中函数的原型是:

extern "C" __declspec(dllexport) char *foo(void);
Run Code Online (Sandbox Code Playgroud)

在C#中,我首先使用:

[DllImport(_dllLocation)]
public static extern string foo();
Run Code Online (Sandbox Code Playgroud)

它似乎在表面上工作,但我在运行时遇到内存损坏错误.我想我指的是记忆恰好是正确的,但已经被释放了.

我尝试使用名为"P/Invoke Interop Assistant"的PInvoke代码生成实用程序.它给了我输出:

[System.Runtime.InteropServices.DLLImportAttribute(_dllLocation, EntryPoint = "foo")]
public static extern System.IntPtr foo();
Run Code Online (Sandbox Code Playgroud)

它是否正确?如果是这样,我如何将此IntPtr转换为C#中的字符串?

c# pinvoke

45
推荐指数
3
解决办法
2万
查看次数

标签 统计

c# ×1

pinvoke ×1