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

本文关键字:输出 自定义 参考 输入 SWIG | 更新日期: 2023-09-27 18:22:07

我正在尝试使用带有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?我想这也会有所帮助。

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

找到的一个解决方案:

在接口文件中添加了以下内容:

%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);

希望也能帮助别人。干杯