为了账号安全,请及时绑定邮箱和手机立即绑定

在 go 中使用 swig 包装的 c++ 库

在 go 中使用 swig 包装的 c++ 库

Go
吃鸡游戏 2023-02-21 19:11:37
我已经成功C++ 地用SWIG. 我发布了模块undefined reference并且可以安装它,但是当我去构建它时,我发现生成的文件中包含的函数有很多错误c。我把生成的solib文件放在我的系统lib目录下,把库中的头文件放到我的系统include目录下,但这并没有解决问题。我猜我c还需要一个用于包装文件的头文件,以便解释器可以知道文件中的内容so,但鉴于SWIG没有生成头文件,我不知道我是否遗漏了其他任何东西。我将尝试编写自己的头文件以查看是否可以解决错误,但即使可以解决,那不应该是自动执行的操作吗SWIG?我的源文件如下/** file: golibraw.i **/%module librawgo%{#define LIBRAW_LIBRARY_BUILD/* Put headers and other declarations here */#include "libraw/libraw.h"#include "libraw/libraw_alloc.h"#include "libraw/libraw_const.h"#include "libraw/libraw_datastream.h"#include "libraw/libraw_internal.h"#include "libraw/libraw_types.h"#include "libraw/libraw_version.h"%}%include "libraw/libraw.h"%include "libraw/libraw_alloc.h"%include "libraw/libraw_const.h"%include "libraw/libraw_datastream.h"%include "libraw/libraw_internal.h"%include "libraw/libraw_types.h"%include "libraw/libraw_version.h"
查看完整描述

1 回答

?
慕斯709654

TA贡献1840条经验 获得超5个赞

原因是 Go 编译器不知道这个库librawgo.so

将以下行放在C评论的顶部librawgo.go

#cgo LDFLAGS: -L<path/to/dir/with/librawgo.so> -lrawgo -lraw

该指令告诉编译器将此行添加到链接器标志。

抱歉,我不知道如何修改您的 CMake 和 SWIG 设置以自动生成此行。


查看完整回答
反对 回复 2023-02-21
  • 1 回答
  • 0 关注
  • 61 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信