我正在开发一个小项目,我使用 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++ 端填充的方法(输出参数)。
您可能认为 C# 列表和 std::list 可以以两种方式编组,但事实并非如此。
相关问题:编组 .NET 泛型类型
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)