![](/img/trans.png)
[英]c#: How to change title of FolderBrowserDialog using P/Invoke?
[英]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.