我在C ++(标题)上有以下功能
string __declspec(dllexport) *GetReaders(int& readerCount);
我在C#上写了下面的方法来调用
[DllImport("ABC.dll", CharSet = CharSet.Auto )]
extern static string[] GetReaders(out IntPtr readercount);
但是在运行之后我可以获得readercount但是应用程序得到了以下错误:
无法封送'返回值':无效的托管/非托管类型组合。
有什么问题?
我是用java做的,并且工作得很好。但我对.Net有疑问。
答案 0 :(得分:2)
使用p / invoke调用该方法是不可能的。那是因为你不能使用p / invoke编组C ++类。 string
大概是std::string
。
您需要使用C ++ / CLI包装器,或者重新设计C ++接口以便p / invoke友好。