导入使用swig创建的go模块



我刚刚拿起swig,试图将一个用C++编写的大型库移植到golang。构建和安装都很顺利,现在我想在我正在进行的另一个项目中使用它来测试它。我在库目录根的一个单独的swig目录中构建了模块,并将带有swig更改的库的一个分支推送到我自己的repo中。然后结构看起来像这个

.
├── bin
├── buildfiles
├── doc
├── GoPro
├── internal
├── lib
├── libraw
├── m4
├── object
├── RawSpeed
├── RawSpeed3
├── samples
├── src
└── swig
├── go.mod
├── libraw.go
├── libraw.i
├── libraw_c_api.cxx
└── libraw_wrap.c

swig/go.mod文件中的模块名称为github.com/MRHT-SRProject/LibRawGo。我试图将该模块包含在另一个项目中,但失败了,错误为module github.com/MRHT-SRProject/LibRawGo@latest found (v0.0.0-20221005050554-bc562f90d08d), but does not contain package github.com/MRHT-SRProject/LibRawGo。我认为这与模块是项目的子文件夹有关,但我真的不确定。

原来go在模块中需要一个子文件夹,该子文件夹的包名与swig中定义的模块的包名相同。通过将swig目录重命名为模块的名称,我使其正常工作。

最新更新