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

我已经成功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"


吃鸡游戏
浏览 62回答 1
1回答

慕斯709654

原因是 Go 编译器不知道这个库librawgo.so。将以下行放在C评论的顶部librawgo.go:#cgo&nbsp;LDFLAGS:&nbsp;-L<path/to/dir/with/librawgo.so>&nbsp;-lrawgo&nbsp;-lraw该指令告诉编译器将此行添加到链接器标志。抱歉,我不知道如何修改您的 CMake 和 SWIG 设置以自动生成此行。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go