簡體   English   中英

如何使用P / Invoke在C#中返回一個列表?

[英]How to return a list in C# using P/Invoke?

我正在開發一個小項目,我使用P / Invoke並希望在C#中返回以下內容:

public: class std::list<int,class std::allocator<int> > const * __thiscall TransactionsModule_t::GetTransactionList(void)const

現在這是我困惑的地方:

[DllImport("TransactionManager.dll", EntryPoint = "...", CallingConvention = CallingConvention.ThisCall)]
public static extern ??? GetTransactionList(
    IntPtr interfacePtr);

我甚至不知道從哪里開始看,因為我無法直接看到返回類型是什么,顯然它是一種列表。 我明白了,但這是一個嵌套列表嗎? 字典Dictionary<int,List<int>>

你不能做這個。 模板類型AFAIK可能無法使用P / Invoke,因為運行時無法確定列表的長度/如何分配和釋放所需的內存量等。

最好的辦法是編寫C ++ / CLI包裝器或將C ++中的返回類型更改為int數組,或者將參數傳遞給可以在C ++端填充的方法(out參數)。

您可能認為C#列表和std :: list可以通過兩種方式進行編組,但事實並非如此。

相關問題: 編組.NET泛型類型

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM