我有一个C ++结构
struct UnmanagedStruct
{
char* s;
// Other members
};
和C#的struct
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和从结构字符串s。