Я работаю над проектом, в котором я хочу использовать библиотеку C ++ в Python.После небольшого исследования я понял, что 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;
return 3;
}
Класс Image определен в заголовке "image.h", который включен в "ct.час".Это, вероятно, проблема здесь, так как библиотека, которая включает в себя класс Image, должна быть связана с библиотекой, которая генерируется Swig.Я не уверен в этом ... И, особенно, я не знаю, как это сделать.Я не смог ничего найти в руководстве.
В любом случае, если я хочу включить библиотеку в python, я получаю следующую ошибку:
>>> import kissCT
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "kissCT.py", line 25, in <module>
_kissCT = swig_import_helper()
File "kissCT.py", line 21, in swig_import_helper
_mod = imp.load_module('_kissCT', fp, pathname, description)
ImportError: ./_kissCT.so: undefined symbol: _ZN5ImageC1Eii
Связанный файл Swig выглядит следующим образом:
/* kissCT test module */
%module kissCT
%{
#import "ct.h"
extern int test();
%}
extern int test();
IНадеюсь, все это не сбивает с толку, и я был бы очень признателен, если бы кто-то понял, что я сделал не так.
Редактировать: связанный файл cmake выглядит как this