Проблема связывания boost-python3 с xcode с помощью macos - PullRequest
1 голос
/ 12 июня 2019

Я хочу использовать boost-python3, чтобы обернуть мой код C ++ в macos с помощью xcode.Я хочу использовать xcode, потому что он связан с музыкальными пакетами JUCE.Я использовал простой пример, взятый из урока повышения:

#include <boost/python.hpp>

char const* greet()
{
    return "hello, world";
}

BOOST_PYTHON_MODULE(hello_ext)
{
    using namespace boost::python;
    def("greet", greet);
}

Когда я скомпилировал код, у меня возникла проблема с линковкой.

Я просмотрел существующую документацию и вопросы и изменил пути включения и пути к библиотекам.В настоящее время я использовал следующее:

Путь поиска в заголовке:

/usr/local/Cellar/python/3.7.3/Frameworks/Python.framework/Versions/3.7/include/python3.7m/

Путь поиска в библиотеке:

/usr/local/Cellar/python/3.7.3/Frameworks/Python.framework/Versions/3.7/lib/

Это журналы ссылок:

Ld build/Debug/Midi2KontaktDLL.dylib normal x86_64
cd /Users/didi/Development/Juce/Midi2KontaktDLL/Builds/MacOSX
export MACOSX_DEPLOYMENT_TARGET=10.11

/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++ -arch x86_64 -dynamiclib -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk -L/Users/didi/Development/Juce/Midi2KontaktDLL/Builds/MacOSX/build/Debug -L/usr/local/Cellar/boost-python3/1.70.0_1/lib -L/usr/local/Cellar/python/3.7.3/Frameworks/Python.framework/Versions/3.7/lib -F/Users/didi/Development/Juce/Midi2KontaktDLL/Builds/MacOSX/build/Debug -filelist /Users/didi/Library/Developer/Xcode/DerivedData/Midi2KontaktDLL-eupsdkbbrcwqymategfreyedipek/Build/Intermediates.noindex/Midi2KontaktDLL.build/Debug/Midi2KontaktDLL\ -\ Dynamic\ Library.build/Objects-normal/x86_64/Midi2KontaktDLL.LinkFileList -install_name /usr/local/lib/Midi2KontaktDLL.dylib -mmacosx-version-min=10.11 -Xlinker -object_path_lto -Xlinker /Users/didi/Library/Developer/Xcode/DerivedData/Midi2KontaktDLL-eupsdkbbrcwqymategfreyedipek/Build/Intermediates.noindex/Midi2KontaktDLL.build/Debug/Midi2KontaktDLL\ -\ Dynamic\ Library.build/Objects-normal/x86_64/Midi2KontaktDLL_lto.o -Xlinker -export_dynamic -Xlinker -no_deduplicate -stdlib=libc++ -framework Accelerate -framework AudioToolbox -framework Carbon -framework Cocoa -framework CoreAudio -framework CoreMIDI -framework IOKit -framework OpenGL -framework QuartzCore -framework WebKit -compatibility_version 1 -current_version 1 -Xlinker -dependency_info -Xlinker /Users/didi/Library/Developer/Xcode/DerivedData/Midi2KontaktDLL-eupsdkbbrcwqymategfreyedipek/Build/Intermediates.noindex/Midi2KontaktDLL.build/Debug/Midi2KontaktDLL\ -\ Dynamic\ Library.build/Objects-normal/x86_64/Midi2KontaktDLL_dependency_info.dat -o /Users/didi/Development/Juce/Midi2KontaktDLL/Builds/MacOSX/build/Debug/Midi2KontaktDLL.dylib

и ошибка, которую я получаю:

Undefined symbols for architecture x86_64:
"_PyUnicode_Type", referenced from:
boost::python::to_python_value<char const* const&>::get_pytype() 
const in Source.o
"__Py_NoneStruct", referenced from:
  boost::python::api::object::object() in Source.o
"boost::python::detail::init_module(PyModuleDef&, void (*)())", 
referenced from:
    _PyInit_hello_ext in Source.o
"boost::python::detail::gcc_demangle(char const*)", referenced 
from:
boost::python::type_info::name() const in Source
"boost::python::detail::scope_setattr_doc(char const*, 
boost::python::api::object const&, char const*)", referenced from:
void boost::python::def<char const* (*)()>(char const*, char const* 
(*)()) in Source.o

Спасибо !!!

...