SWIG参考输入,自定义类输出

时间:2014-09-17 11:21:36

标签: c# c++ reference swig

我正在尝试使用SWIG在C#中使用C ++库。 我有一个方法,它获取float和/或uint8_t引用输入并返回自定义类对象。 无法应用SWIG命令来克服此权利。

C ++:

virtual eoReturn GetValue(CHANNEL_TYPE type, float &value) {...}
virtual eoReturn GetValue(CHANNEL_TYPE type, uint8_t &value) {...}

.I:

%module eoTest
%{  
    #include "eoTest.h"  
%}  

%include typemaps.i
%include cpointer.i 
extern eoReturn eoProfile::GetValue(CHANNEL_TYPE INPUT, float &INPUT);
extern eoReturn eoProfile::GetValue(CHANNEL_TYPE INPUT, uint8_t &INPUT);
%include "eoTest.h"

仍然是SWIGTYPE_p_float和unsigned_char。 不知道怎么解决这个问题?或者如何在C#中初始化SWIGTYPE_p_float?这也有助于我猜测。

1 个答案:

答案 0 :(得分:1)

找到的一个解决方案:

将以下内容添加到接口文件中:

%include cpointer.i     
%pointer_functions(float, floatp);

这创建了名为'new_floatp','delete_floatp','floatp_assign'等名称的方法......

可以在C#中使用:

SWIGTYPE_p_float f = WrapperCPP.new_floatp();
WrapperCPP.floatp_assign(f, 12);
Console.WriteLine("Value: " + WrapperCPP.floatp_value(f).ToString("0.0")); // Value: 12
WrapperCPP.delete_floatp(f);

这对于uint8_t也适用

%pointer_functions(unsigned char, uintp);

希望也可以帮助别人。干杯