编组如何在C#上返回字符串数组

时间:2015-01-13 21:10:02

标签: c# arrays pinvoke marshalling

我在C ++(标题)上有以下功能

string               __declspec(dllexport) *GetReaders(int& readerCount);

我在C#上写了下面的方法来调用

[DllImport("ABC.dll", CharSet = CharSet.Auto )]
        extern static string[] GetReaders(out IntPtr readercount);

但是在运行之后我可以获得readercount但是应用程序得到了以下错误:

无法封送'返回值':无效的托管/非托管类型组合。

有什么问题?

我是用java做的,并且工作得很好。但我对.Net有疑问。

1 个答案:

答案 0 :(得分:2)

使用p / invoke调用该方法是不可能的。那是因为你不能使用p / invoke编组C ++类。 string大概是std::string

您需要使用C ++ / CLI包装器,或者重新设计C ++接口以便p / invoke友好。