c# - 在与 STL 混合的 C# 中调用非托管 C++ 代码

标签 c# c++ stl dllimport

嘿,我想在 C# 中调用非托管 C++ 代码 功能界面如下(为了便于理解,我做了简化)

Face genMesh(int param1, int param2);

Face 是一个结构,定义为:

struct Face{
    vector<float> nodes;
    vector<int>  indexs;
}

我搜索并阅读了 MSDN 文档,找到了在 C# 中调用简单的 c/c++ 非托管代码的方法,也知道如何将结构作为返回值传递。我的问题是如何处理“vector ”。我在C#中没有找到vector和某些类型之间映射的规则

谢谢!

最佳答案

如果可能,您希望避免在纯非托管代码以外的任何地方使用 STL。当您将它与 C++/CLI(或托管 C++)混合使用时,您最终可能会以托管方式运行 STL 代码,而以非托管方式运行客户端代码。发生的情况是,当您迭代一个 vector 时,对 vector 方法的每次调用都将转换为托管代码并再次返回。

参见 here对于类似的问题。

关于c# - 在与 STL 混合的 C# 中调用非托管 C++ 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2593602/

相关文章:

c# - 在 C# 中从控制台调用 Windows 窗体

c++ - 为什么这种替换失败会再次产生错误?

c++ - 为什么 vector::erase() 不会使对已删除元素的引用无效?

c++ - 将时间(以秒为单位)从大纪元转换为一年中的某一天?

c++ - 您可以使用自定义比较器将 std::map 转换为无序映射吗?

c++ - 在 CPP 中删除重叠对象

c# - 跨 AppDomain 调用破坏了运行时

c# - 如何正确处理 "existing connection forcibly closed"

c# - 我应该如何编写 XML 注释以避免在摘要和返回标记之间重复自己?

c++ - Xed2-Intel64 库 - 发出 MOV 操作码