2015-01-13 84 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友好。