我一直在尝试将 log4cxx 链接到我的 ObjC/ObjC++/C++ 项目中。它可以编译,但由于未定义的符号,总是在链接阶段失败。通过打开 Xcode 构建选项“Display Mangled Names”,我可以看到为什么会出现这种情况。链接器正在查找的重整名称与 log4cxx.dylib 文件中的重整名称不同。
例如
"log4cxx::Logger::forcedLog(log4cxx::helpers::ObjectPtrT<log4cxx::Level> const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, log4cxx::spi::LocationInfo const&) const"
变成
"__ZNK7log4cxx6Logger9forcedLogERKNS_7helpers10ObjectPtrTINS_5LevelEEERKNSt3__112basic_stringIcNS7_11char_traitsIcEENS7_9allocatorIcEEEERKNS_3spi12LocationInfoE"
从链接器的角度来看。然而,nm 在 log4cxx.dylib 中报告的最接近的符号是
__ZNK7log4cxx6Logger9forcedLogERKNS_7helpers10ObjectPtrTINS_5LevelEEERKSbIwSt11char_traitsIwESaIwEERKNS_3spi12LocationInfoE
我创建的这个库是使用 Apache 提供的 Xcode 项目创建的。
我看到之前有人问过类似的问题(How can I resolve single symbol link error when dynamic linking XCode project to lib4cxx library?),但没有有用的回应。
一个决议将不胜感激。