3
我有C++中的DLL,它返回列表,我想用它在我的C#應用程序的列表我如何列出名單<int>?
[DllImport("TaskLib.dll", SetLastError = true, CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
public static extern List<int> GetProcessesID();
public static List<int> GetID()
{
List<int> processes = GetProcessesID();//It is impossible to pack a "return value": The basic types can not be packed
//...
}
'的std ::列表<>'和'系統.Collections.Generic.List <>'是不相同的儘可能的方式。除非您編寫C++/CLI shim,否則您的C++代碼只需要按照POD類型工作 - 返回標準庫對象永遠不會起作用。 – ildjarn 2012-04-23 22:49:54
相反的問題(編組和從C#傳遞給C++的列表)已經被問到[這裏](http://stackoverflow.com/q/6532923/960195),並且可能會有幫助。 – 2012-04-23 22:50:08
我認爲你可以做這種編組的唯一方法是編寫一個C++/CLI中間函數來執行「手動」轉換。 – 2012-04-23 22:51:46