【问题标题】:error when creating an archive of my cocos2d app创建我的 cocos2d 应用程序的存档时出错
【发布时间】:2013-10-28 12:24:35
【问题描述】:

我正在使用 cocos2d-iphone (develop-v2) 和 xcode 5,在尝试归档我的应用程序时出现此错误:(而不是在我编译它时)

libs/kazmath/src/neon_matrix_impl.c:64:15

error: unknown register name 'q0' in asm
         : "memory", "q0", "q1", "q2", "q3", "q8", "q9", "q10", "q11", "q12", "q13", "q14", "q15" //clobber
                     ^
libs/kazmath/src/neon_matrix_impl.c:93:15: error: unknown register name 'q0' in asm
         : "memory", "q0", "q1", "q8", "q9", "q10", "q11" //clobber
                     ^
2 errors generated.

如何解决?

【问题讨论】:

标签: cocos2d-iphone


【解决方案1】:

我不得不更换:

#if defined(__ARM_NEON__)

作者:

#if defined(_ARM_ARCH_7)

在文件neon_matrix_impl.c中。

【讨论】:

  • 更新:也许在 mat4.c 中修复它并简单地删除触发对 NEON_Matrix4Mul 调用的 ifdef 和代码不那么笨拙。在 kmMat4Multiply 函数中
  • 这救了我!近一个月来,我一直在寻找解决方案!
  • 您必须在两个文件中将 ARM_NEON 更改为 ARMARCH_7,neon_matrix_impl.c 和 mat4.c。之后 64 位应该可以正常工作。
【解决方案2】:

如果你只是在 neon_matrix_impl.c 中更改,这是 kazmath 中的错误

Undefined symbols for architecture arm64:  
  "_NEON_Matrix4Mul", referenced from:  
      _kmMat4Multiply in libcocos2d-library.a(mat4.o)  
ld: symbol(s) not found for architecture arm64  
clang: error: linker command failed with exit code 1 (use -v to see invocation)

您必须在两个文件中将 ARM_NEON 更改为 ARMARCH_7:

  1. neon_matrix_impl.c
  2. mat4.c

在两个文件中搜索 #if 并替换它。

#if defined(__ARM_NEON__)

#if defined(_ARM_ARCH_7)

64 位之后应该可以正常工作。

【讨论】:

  • 如果您格式化您的答案以便代码具有正确的换行符,这将有所帮助。
  • 这有助于解决我在尝试构建使用 64 位 Cocos2d 构建的旧游戏时遇到的问题。
【解决方案3】:

#if defined(_ARM_ARCH_7) 使用 cocos2D v2.1 编译,但会出现链接错误(在 iPad Air 上)。

我已经使用 cocos2D v3 kazmath 库 (https://github.com/cocos2d/cocos2d-iphone/tree/develop-v3/external/kazmath) 升级了我的 karmath 库。

它对我有用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-31
    • 2023-04-07
    • 1970-01-01
    • 2017-03-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多