C#P/Invoke中的Marshal C++"string"类

Ada*_*ile 7 .net c++ string interop marshalling

我在本机DLL中有一个函数,定义如下:

#include <string>
void SetPath(string path);
Run Code Online (Sandbox Code Playgroud)

我试着将它放在微软的P/Invoke Interop助手中,但它在"字符串"类(我认为是来自MFC?)上窒息了.

我已经尝试将它编组为各种不同的类型(C#String,char [],byte []),但每次我得到一个NotSupportedException或一个Native Assembly Exception(取决于我试过的编组).

任何人都曾使用本机字符串类的Native/Managed Interop?有没有办法让这个元帅?我是否必须自己编写Marshaler?

And*_*ser 6

看起来你正在尝试使用C++标准库字符串类.我怀疑元帅会很容易.最好坚持使用char*和Marshal作为StringBuilder.这就是我通常做的事情.您必须添加一个为您生成C++字符串的包装器.