Я пытаюсь завершить два файла C ++ для использования в Python. Я использую библиотеку Python Boost. Файлы отображаются для правильной компиляции, но импорт модулей приводит к ошибке «Ошибка импорта: неопределенный символ».
Эта проблема имеет отношение к boost, который неправильно находит мои зависимые файлы c ++, но я не знаю, как их добавить.
Python версия: 2.7.12
Буст версия: 1.58
ОС: Ubuntu 16.04
Моя структура кода выглядит следующим образом:
hellomodule.cpp
#include <iostream>
#include <cstdint>
#include "test.h"
using namespace std;
void say_hello(const char* name) {
cout << "Hello " << name << "!\n";
run_test();
}
#include <boost/python/module.hpp>
#include <boost/python/def.hpp>
using namespace boost::python;
BOOST_PYTHON_MODULE(hello)
{
def("say_hello", say_hello);
}
test.cpp
#include "test.h"
using namespace std;
void run_test(void){
cout << "Sup";
}
setup.py
#!/usr/bin/env python
from distutils.core import setup
from distutils.extension import Extension
module1 = Extension("hello",
sources = ["hellomodule.cpp", "test.cpp"],
libraries = ["boost_python"],
extra_compile_args=['-std=c++11'])
setup(name="PackageName",
ext_modules=[module1])
Из командной строки я запускаю "python setup.py build", который создает мой файл hello.so. Когда я пытаюсь импортировать «привет», я получаю «ImportError: ./hello.so: неопределенный символ: _Z8run_testv»
Если бы кто-то мог указать мне правильное направление, это было бы очень признательно.