使用cmake和其他库的Swig 我正在研究一个项目,我想在Python中使用C++库。经过一点研究,我发现Swig将是一个很好的方法(一个小例子有效)
所以现在我正试图将Swig加入到cmake中,以使事情变得更舒适 就我而言,我有一个非常小的程序来测试东西:使用cmake和其他库的Swig 我正在研究一个项目,我想在Python中使用C++库。经过一点研究,我发现Swig将是一个很好的方法(一个小例子有效),c++,python,cmake,swig,C++,Python,Cmake,Swig,所以现在我正试图将Swig加入到cmake中,以使事情变得更舒适 就我而言,我有一个非常小的程序来测试东西: #include "ct.h" using namespace std; int main(int argc, char const *argv[]) { /* code */ return 0; } int test() { Image image(10,11); cout << "hallo"<< endl; re
#include "ct.h"
using namespace std;
int main(int argc, char const *argv[])
{
/* code */
return 0;
}
int test()
{
Image image(10,11);
cout << "hallo"<< endl;
return 3;
}
我希望,所有这些都不会让人困惑,如果有人知道我做错了什么,我会非常感激
编辑:相关的cmake文件看起来像是Python需要能够在运行时找到图像库。最简单的方法是将LD_LIBRARY_PATH环境变量设置为包含未定义符号的image.so文件的文件夹
如果您运行命令“ldd\u kissCT.so”,它应该会显示它所依赖的库。实际上,由于未解析的符号已被C++损坏,这表明缺少以下链接器选项:
-lstdc++
非常感谢你的回答。我在.bashrc文件中设置了LD_LIBRARY_PATH变量,并尝试再次运行它。不幸的是,我也犯了同样的错误。另外,令人惊讶的是,ldd没有列出缺少定义的库。您需要链接_kissCT。因此,当您构建图像库时,这就是我之前描述的问题(请阅读上文)。如何在cmake中执行此操作?可能将图像库添加到SWIG_LINK_库中?恐怕我对cmake不太熟悉。是的,这正是我所缺少的。我将丢失的库添加到SWIG_LINK_库中,它成功了。非常感谢你。
/* kissCT test module */
%module kissCT
%{
#import "ct.h"
extern int test();
%}
extern int test();
-lstdc++