3
我有一個C++結構PInvoke的錯誤,在一個字符串編組結構時
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,這個函數調用就可以工作。
爲什麼我需要這樣做?我早些時候問過這個問題,人們都說它會「正常工作」。 – DevDevDev 2009-08-03 17:57:59