【问题标题】:cocos2d-x-2.1.4 : error: format not a string literal and no format arguments [-Werror=format-security]cocos2d-x-2.1.4 : 错误:格式不是字符串文字,也没有格式参数 [-Werror=format-security]
【发布时间】:2013-08-25 23:09:41
【问题描述】:

我正在 cocos2d-x-2.1.4 上开发游戏,但是,当我尝试在 Android 上构建它时,它失败并出现错误:格式不是字符串文字并且没有格式参数 [-Werror=format-安全]文件CCCommon.cpp

但是,当我检查进攻线时,完全没问题。当我使用 Visual Studio 和 XCode 为 WIN32 和 iOS 构建文件时,该文件也构建得很好。

错误日志如下:

C:/Development/External/cocos2d-2.1rc0-x-2.1.3/projects/Game_C2DX213/proj.android/../../..//cocos2dx/platform/android/CCCommon.cpp: In function 'void cocos2d::CCLog(char const*, ...)':
/cygdrive/c/eclipse/android-ndk-r9/build/core/build-binary.mk:348: recipe for target `obj/local/armeabi/objs/cocos2dx_static/platform/android/CCCommon.o' failed
C:/Development/External/cocos2d-2.1rc0-x-2.1.3/projects/Game_C2DX213/proj.android/../../..//cocos2dx/platform/android/CCCommon.cpp:44:72: error: format not a string literal and no format arguments [-Werror=format-security]
C:/Development/External/cocos2d-2.1rc0-x-2.1.3/projects/Game_C2DX213/proj.android/../../..//cocos2dx/platform/android/CCCommon.cpp: In function 'void cocos2d::CCLuaLog(char const*)':
make: Leaving directory `/cygdrive/c/Development/External/cocos2d-2.1rc0-x-2.1.3/projects/Game_C2DX213/proj.android'
C:/Development/External/cocos2d-2.1rc0-x-2.1.3/projects/Game_C2DX213/proj.android/../../..//cocos2dx/platform/android/CCCommon.cpp:54:77: error: format not a string literal and no format arguments [-Werror=format-security]
cc1plus.exe: some warnings being treated as errors

【问题讨论】:

    标签: android cocos2d-iphone android-ndk cocos2d-x


    【解决方案1】:

    注意cocos2d-x-2.1.4可能不兼容ndk-r9,你有没有换过r8e试试?

    您也可以将其放在 Application.mk 中,以禁用将这些警告视为错误: APP_CFLAGS += -Wno-error=format-security

    同一个问题还有更多的解决方案在这个帖子里:

    http://www.cocos2d-x.org/boards/6/topics/32437?r=33260#message-33260

    reference: http://www.cocos2d-x.org/boards/6/topics/33525?r=33579

    【讨论】:

    • "这是由 android-ndk-r9 引起的,你可以从 android-ndk-r9/build/core/default-build-commands.mk 中删除 -Werror=format-security" 以下对我有帮助,谢谢
    • @igrek - 如果我理解正确,您的答案会有所不同,并且与更改 Android 的文件而不是开发人员的项目文件有关。
    • @kilaka - 是的,所以我已经修补了 android ndk 本身。更改项目文件而不是 ndk 仍然更好,但它对我不起作用:(
    • 您不应该修补 NDK。在控制它的 android make 文件中有 LOCAL_DISABLE_FORMAT_STRING_CHECKS 标志。
    • APP_CFLAGS += -Wno-error=format-security 无效,LOCAL_DISABLE_FORMAT_STRING_CHECKS := true 有帮助。
    【解决方案2】:

    你必须在你的 Android.mk 以下 LOCAL_DISABLE_FORMAT_STRING_CHECKS := true

    【讨论】:

    • 如果我使用的是 Android Studio,你会怎么做?编辑 Android.mk 似乎不起作用。
    • @harikris imho 您正在通过 gradle 和“新构建系统”编译它。它会创建临时的 Android.mk 并使用它而不是您的文件。您必须阅读文档并找到为 gragle 提供自定义 android.mk 路径的密钥,或者您可以节省大量时间并像往常一样使用 ndk-build。
    猜你喜欢
    • 1970-01-01
    • 2013-06-20
    • 2014-12-23
    • 1970-01-01
    • 2010-12-13
    • 2011-05-24
    • 2011-08-12
    • 1970-01-01
    • 2015-01-27
    相关资源
    最近更新 更多