我有一个 C++ 结构
struct UnmanagedStruct
{
char* s;
// Other members
};
和一个 C# 结构
struct ManagedStruct {
[MarshalAs(UnmanagedType.LPStr)]
string s;
// Other members
}
C++ 库公开
extern "C" UnmanagedStruct __declspec(dllexport) foo( char* input );
它是像进口的
[DllImport("SomeDLL.dll", CharSet = CharSet.Ansi)]
static extern ManagedStruct foo( string input );
但是,当我调用此函数时,我得到
MarshalDirectiveException 未处理
方法的类型签名与 PInvoke 不兼容。
问题是,如果我从结构中删除 char* s 和 string s,则此函数调用有效。