2015-01-13 50 views
0

我有下面的C函数++(头)如何编组返回数组C#

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

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

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

但是运行之后,我可以得到readercount但该应用得到了以下错误:

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

出了什么问题?

我做到了,并完美的工作。但是我对.Net有问题。

+0

编组几乎从不平凡,但编组字符串始终保证是复杂的。那是你从方法中返回的std :: string数组吗?那是怎么分配的? –

+1

99%的机会有内存泄漏 – leppie

回答

2

用p/invoke调用该方法是不可能的。那是因为你不能使用p/invoke编组C++类。据推测,stringstd::string

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