std :: vector从本地库到C ++ / CLI

时间:2018-01-31 02:05:39

标签: c++ c++-cli dllimport

现在我需要创建一个C ++ - &gt; C ++ / CLI - &gt; C#包装器,用于本机C ++库中的相同代码。 这个库有类似的方法 std::vector<float>& Foo(std::vector<float>& vec, std::vector<std::vector<float>>& matrix)

我有两个问题。

1)如何在C ++ / CLI中从本机库加载函数? 2)如何将std::vector<float>& / std::vector<std::vector<float>>&传递给函数并返回std::vector<float>&

我知道如何为IEnumerable数据创建包装器,我需要将其作为输入数据传递给函数,只需要解决这两个问题。((

谢谢。

1 个答案:

答案 0 :(得分:1)

要加载C ++本机库,无论您通常从C ++执行什么操作,都可以从C ++ / CLI执行此操作。无论是静态库还是DLL,过程都是一样的。

对于您的参数/返回类型,您将希望C ++ / CLI公开方法具有良好的&amp;正常.Net类型。您需要将数据复制到本机C ++库要使用的任何内容。

对于参数,您将要使用.Net中可能有意义的任何集合对象(可能是IEnumerable<float>^IList<float>^array<float,2>^),并将数据复制到手动std::vector(使用简单的for循环,不要试图获得幻想)。对于返回值,反方向相同:创建一个新的List<float>^,从向量中复制数据,然后返回新列表。