Я хочу создать приложение на C++, которое может обрабатывать плагины python, поэтому я попадаю в boost.python. Я создаю несколько тестовых программ, которые я создаю с помощью CMake.Здание с Boost.Python и статические библиотеки
В моей тестовой программе у меня есть простая «библиотека», предлагающая интерфейс плагина (с использованием boost.python, чтобы разоблачить это на python), и плагин-загрузчик (еще не закодированный, ничего внутри).
Когда я пытаюсь построить свой исполняемый файл непосредственно (без каких-либо библиотек), я получаю ошибку ссылки (модуль я подвергается называется pythonPlugin):
duplicate symbol _initpythonPlugin in:
CMakeFiles/pythonPluginer.dir/main.cpp.o
libcoreLib.a(PluginLoader.cpp.o)
duplicate symbol __Z24init_module_pythonPluginv in:
CMakeFiles/pythonPluginer.dir/main.cpp.o
libcoreLib.a(PluginLoader.cpp.o)
У меня есть один и тот же результат, когда я строю промежуточная статическая библиотека. Однако, когда я превращаю эту библиотеку в общую, это отлично работает. Ниже представлен субмат CMakeList.txt:
file(GLOB sources core/*.h core/*.cpp)
add_library(coreLib SHARED ${sources})
target_link_libraries(coreLib
${PYTHON_LIBRARIES}
${Boost_LIBRARIES})
add_executable(pythonPluginer main.cpp)
target_link_libraries(pythonPluginer
coreLib)
У вас есть какие-либо объяснения этому? Можно ли создать программу с boost/python без использования разделяемых библиотек?
Thanks, Denis.
Я пробовал, но у меня был тот же результат: / – DenisB