所以我想在我的 cocos2d + box2d 项目中公开一个 Box2D (C++) 指向其他 Objective-C++ 类的指针。我在我的接口中声明了一个方法“getWorld”,它引用了 C++ 类 b2World 并导入了 Box2D.h。我项目中的所有文件都是 .mm 扩展名,我收到以下编译错误:
In file included from DebugDrawLayer.mm:2:
In file included from World.h:10:
In file included from external/Box2d/Box2D/Box2D.h:34:
external/Box2d/Box2D/Common/b2Settings.h:22:10: fatal error: 'cassert' file not found
#include <cassert>
我猜 Box2D.h 以某种方式编译为 C 而不是 C++,但我不明白这是怎么发生的。根据日志,包含链显然是从 .mm 文件开始的。
更新:
日志显示 World.mm(较早编译)清楚地编译为objective-c++
CompileC Objects-normal/i386/World.o World.mm normal i386 objective-c++ com.apple.compilers.llvm.clang.1_0.compiler
但是对于 DebugDrawLayer.mm 它说的是objective-c
CompileC Objects-normal/i386/DebugDrawLayer.o DebugDrawLayer.mm normal i386 objective-c com.apple.compilers.llvm.clang.1_0.compiler
这两个文件都设置为默认值 - Objective-C++ 源代码。是什么赋予了..?