【问题标题】:stl Linking Error on xcodexcode上的stl链接错误
【发布时间】:2017-08-22 15:29:43
【问题描述】:

当使用 xcode 生成可执行文件时,我有 3 个链接错误。我使用了今天早上自己编译的 Irrlicht 1.9。

我想说 CIrrDeviceOSX.mm 文件是一个 Objective-c 文件,可以在这里找到: https://github.com/zaki/irrlicht/blob/master/source/Irrlicht/CIrrDeviceOSX.h https://github.com/zaki/irrlicht/blob/master/source/Irrlicht/CIrrDeviceOSX.mm

我认为错误在“std::map KeyCodes;”内部在 CIrrDeviceOSX.h 中并在 CIrrDeviceOSX.mm 中使用

我不知道问题是文件在objective-c中并且方法的签名不同还是C++版本不同(c++11或???)。

ld bin/Debug/minetest 正常 x86_64 cd /Users/bluholm/Desktop/minetest-release/minetest 导出 MACOSX_DEPLOYMENT_TARGET=10.12 /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++ -arch x86_64 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10。 12.sdk -L/Users/bluholm/Desktop/minetest-release/minetest/bin/Debug -F/Users/bluholm/Desktop/minetest-release/minetest/bin/Debug-filelist /Users/bluholm/Desktop/minetest- release/minetest-osx/src/minetest.build/Debug/minetest.build/Objects-normal/x86_64/minetest.LinkFileList -mmacosx-version-min=10.12 -Xlinker -object_path_lto -Xlinker /Users/bluholm/Desktop/minetest- release/minetest-osx/src/minetest.build/Debug/minetest.build/Objects-normal/x86_64/minetest_lto.o -Xlinker -no_deduplicate -lc++ -pagezero_size 10000 -image_base 100000000 -Wl,-search_paths_first -Wl,-headerpad_max_install_names / usr/lib/libz.dylib /usr/local/Cellar/irrlicht/1.9/lib/libIrrlicht.a -framework OpenGL -framework OpenAL /usr/local/lib/libvorbisfile.dylib /usr/local/lib/libvorbis.dylib / usr/local/lib/libo gg.dylib /usr/lib/libsqlite3.dylib /usr/local/lib/libluajit-5.1.dylib /Users/bluholm/Desktop/minetest-release/minetest-osx/src/gmp/Debug/libgmp.a /Users/ bluholm/Desktop/minetest-release/minetest-osx/src/jsoncpp/json/Debug/libjsoncpp.a -framework CoreFoundation -lpthread /usr/lib/libiconv.dylib -framework Carbon -framework Cocoa -framework IOKit /usr/lib/ libiconv.dylib /usr/lib/libcurl.dylib /usr/local/lib/libfreetype.dylib /Users/bluholm/Desktop/minetest-release/minetest-osx/src/cguittfont/Debug/libcguittfont.a /usr/lib/ libcurses.dylib /usr/lib/libform.dylib /usr/local/lib/libhiredis.dylib -framework Carbon -framework Cocoa -framework IOKit /usr/lib/libcurl.dylib /usr/lib/libcurses.dylib /usr/lib /libform.dylib /usr/local/lib/libhiredis.dylib /usr/lib/libz.dylib /usr/local/Cellar/irrlicht/1.9/lib/libIrrlicht.a /usr/local/lib/libfreetype.dylib -Xlinker -dependency_info -Xlinker /Users/bluholm/Desktop/minetest-release/minetest-osx/src/minetest.build/Debug/minetest.build/Objects-normal/x86 _64/minetest_dependency_info.dat -o /Users/bluholm/Desktop/minetest-release/minetest/bin/Debug/minetest

架构 x86_64 的未定义符号:

“std::_Rb_tree_decrement(std::_Rb_tree_node_base*)”,引用自: std::_Rb_tree_iterator >::operator--() in libIrrlicht.a(CIrrDeviceOSX.o)

“std::_Rb_tree_increment(std::_Rb_tree_node_base*)”,引用自: std::_Rb_tree_iterator >::operator++() in libIrrlicht.a(CIrrDeviceOSX.o)

“std::_Rb_tree_insert_and_rebalance(bool, std::_Rb_tree_node_base*, std::_Rb_tree_node_base*, std::_Rb_tree_node_base&)”,引用自: std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_insert(std::_Rb_tree_node_base*, std::_Rb_tree_node_base*, std::pair const&) 在 libIrrlicht.a(CIrrDeviceOSX .o)

ld:未找到架构 x86_64 的符号

clang:错误:链接器命令失败,退出代码为 1(使用 -v 查看调用)

【问题讨论】:

    标签: c++ xcode stl


    【解决方案1】:

    尝试使用源代码在 XCode 中创建一个新项目,并将 C++ 标准库从默认的 libc++ 更改为 libstdc++

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-29
      • 2010-11-25
      • 2013-02-06
      • 1970-01-01
      • 2012-09-28
      • 1970-01-01
      相关资源
      最近更新 更多