gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 21:17:49 26 4
gpt4 key购买 nike

我正在开发一个使用 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>>

最佳答案

你不能这样做。模板类型,据我所知,不能与 P/Invoke 一起工作,可能是因为运行时无法计算出列表的长度/如何分配和释放所需的内存量等。

最好的办法是编写 C++/CLI 包装器或将 C++ 中的返回类型更改为 int 数组或将参数传递给可在 C++ 端填充的方法(输出参数)。

您可能认为 C# 列表和 std::list 可以两种方式编码,但事实并非如此。

相关问题:Marshalling .NET generic types

关于c# - 如何使用 P/Invoke 在 C# 中返回列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31529316/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com