将Std::vector通过ref / out从c#传递到c++

本文关键字:c++ vector Std 通过 ref out | 更新日期: 2023-09-27 18:09:40

给出c++函数

void Foo(unsigned int _x, unsigned int _y, std::vector< unsigned int > &_results)

和将std::vector映射到c#中的VectorUInt32类型的Swig接口文件

%include "std_vector.i"
namespace std {
   %template(VectorUInt32) vector<unsigned int>;
};

在c#代码中得到以下结果:

public static void Foo(uint _x, uint _y, VectorUInt32 _results)

这很好,但我真正希望的是这个:

public static void Foo(uint _x, uint _y, out VectorUInt32 _results)

有没有人知道如何映射std::vector从c++到c#作为ref out参数?

将Std::vector通过ref / out从c#传递到c++

Stackoverflow真可耻,没有答案!

无论如何,答案是,如果有人感兴趣…如果你在c#中创建了VectorUInt32类型并将其传递给c++函数,它是通过引用传递的,因此可以在c++中修改而不需要ref out参数。

接口变为:

c++

void Foo(unsigned int _x, unsigned int _y, std::vector< unsigned int > &_results)

接口文件

%include "std_vector.i"
namespace std {
   %template(VectorUInt32) vector<unsigned int>;
};
c#

public static void Foo(uint _x, uint _y, VectorUInt32 _results)
使用

// Create and pass vector to C++
var vec = new VectorUInt32();
Foo(x, y, vec);
// do something with vec, its been operated on!