【发布时间】:2012-08-19 23:25:37
【问题描述】:
我正在使用带有 Box2d 的 cocos2d 模板,但是当我在我的项目中导入 Box2d.h 时,它给了我错误 未找到 cassert 字段 我有 cocos2d 2.0 版 请帮帮我
【问题讨论】:
标签: iphone cocos2d-iphone game-physics box2d-iphone
我正在使用带有 Box2d 的 cocos2d 模板,但是当我在我的项目中导入 Box2d.h 时,它给了我错误 未找到 cassert 字段 我有 cocos2d 2.0 版 请帮帮我
【问题讨论】:
标签: iphone cocos2d-iphone game-physics box2d-iphone
确保您项目的所有源代码文件的文件扩展名为 .mm 而不是 .m。或者将每个 .m 文件的类型设置为 Objective-C++。
【讨论】:
更改您的文件扩展名 .mm 就是这样
【讨论】:
在 xcode 4 中更改扩展名将不起作用。而是转到构建设置(选项卡)并将 C++ 标准库设置从编译器默认更改为 libc++ (LLVM...)。
如果您现在构建它,您将收到一条错误消息,指出应用与 iOS 5 或更高版本不兼容。所以转到摘要(选项卡)并将部署目标更改为 5.0。现在应该可以成功构建了。
【讨论】:
这是我解决问题的方法。清理和重新创建项目对我来说似乎不是一个好主意。
网上有几个关于这个问题的答案,但每个答案都没有帮助我解决问题。一个在 SO 上
cassert file not found but i use Box2d template另一个在cocos2d-iphone论坛,
结合这两个建议对我有用 -
- 将您的所有文件(不是 cocos2d 或 box2d 文件,只是您的项目文件)从 .m 重命名为 .mm
- 确保在每个文件的右侧窗格中,“类型”选项设置为“默认 - 目标 C++ 源”
对我来说还有另一个问题,对你来说可能不是问题,我在 CCLabelTTF 中使用了以下签名
CCLabelTTF *title = [CCLabelTTF labelWithString:@"Hello" dimensions:CGSizeMake(720.0f, 880.0f) alignment:UITextAlignmentLeft fontName:@"Arial" fontSize:34];
这已被弃用,并导致整个地方的错误。我现在正在使用以下稍作修改的版本并修复了错误 -
CCLabelTTF *title = [CCLabelTTF labelWithString:@"Hello" dimensions:CGSizeMake(720.0f, 880.0f) hAlignment:kCCTextAlignmentRight fontName:@"Arial" fontSize:34];
我最近关于这个修复的文章可以在 -http://indiangamer.com/how-i-fixed-the-cocos2d-box2d-include-file-not-found-error/ 找到
【讨论】:
对于像我这样的人:我刚刚尝试重新打开一个非常旧的 xcode 项目,并在 cassert 文件中出现此错误。
只需将目标设置为新目标(在我的情况下为 iOS 13),它就会自动选择正确版本的 c++ stdlib,一切正常。
【讨论】: