使用macOS将boost-python3与xcode链接时出现问题

时间:2019-06-12 09:42:18

标签: xcode macos linker-errors python-3.7 boost-python

我希望使用boost-python3用xcode将我的C ++代码包装在macos中。 我想使用xcode,因为它已链接到JUCE音乐包。我使用了一个来自Boost教程的简单示例:

#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

谢谢!

0 个答案:

没有答案