gpt4 book ai didi

c# - SWIG 引用输入,自定义类输出

转载 作者:行者123 更新时间:2023-11-28 06:41:26 34 4
gpt4 key购买 nike

我正在尝试通过 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?我猜这也会有所帮助。

最佳答案

发现的一个解决方案:

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

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

希望也能帮助别人。干杯

关于c# - SWIG 引用输入,自定义类输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25889185/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com