【问题标题】:Undefined symbols for architecture arm64 [SDKBOX and cocos2dx v2.2.6]架构 arm64 的未定义符号 [SDKBOX 和 cocos2dx v2.2.6]
【发布时间】:2017-01-13 19:54:36
【问题描述】:

我正在使用 cocos2dx v2.2.6 和 SDKBOX 1.0.16(今天发布)更新一个非常老的游戏。我已完成所有步骤,但在更新 iOS 目标时遇到了死锁。

我收到此错误:

Undefined symbols for architecture arm64: "sdkbox::PluginChartboost::show(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)", referenced from: GameLayer::pauseGame(cocos2d::CCObject*) in GameLayerScene.o "sdkbox::PluginAdMob::isAvailable(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)", referenced from: GameLayer::pauseGame(cocos2d::CCObject*) in GameLayerScene.o "sdkbox::PluginAdMob::show(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)", referenced from: GameLayer::pauseGame(cocos2d::CCObject*) in GameLayerScene.o "sdkbox::PluginChartboost::isAvailable(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)", referenced from: GameLayer::pauseGame(cocos2d::CCObject*) in GameLayerScene.o "sdkbox::PluginAdMob::cache(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)", referenced from: GameLayer::pauseGame(cocos2d::CCObject*) in GameLayerScene.o AppDelegate::applicationDidFinishLaunching() in AppDelegate.o ld: symbol(s) not found for architecture arm64 clang:错误:链接器命令失败,退出代码为 1(使用 -v 查看调用) 如您所见,它无法识别任何与 Ads 相关的方法,但每个插件的 init 函数都可以正常工作并且不会导致任何错误。

有人注意到这样的问题或知道是什么原因造成的吗?我已经用框架仔细检查了链接二进制文件中的框架。

谢谢。

【问题讨论】:

    标签: ios cocos2d-x cocos2d-x-3.0 cocos2d-x-2.x


    【解决方案1】:

    您需要修复构建目标,以便它实际链接到 C++ 库。要检查的一件事是确保您的项目中确实有一个 .cpp 或 .mm 文件,以便 Xcode 知道自动链接 C++ 运行时(具有正确扩展名的空文件会这样做)。

    【讨论】:

    • 我的项目中有多个 .cpp 文件,即我的 cocos2dx 游戏项目的类以及 cocos2dx 游戏引擎类。
    • 好吧,您必须在构建时检查链接行,以确保包含 C++ 库。您的项目无法链接,因为它无法将所有 C++ 符号都用于某些原因。
    猜你喜欢
    • 2015-01-04
    • 2013-10-13
    • 1970-01-01
    • 2018-11-01
    • 2021-08-23
    • 2021-07-25
    相关资源
    最近更新 更多