我有一个在Xcode4.5.2中运行良好的iOS应用程序,但在Xcode4.6.3中,我的自定义c++类得到了未定义的符号。
SomeClass.hpp
class SomeClass{
public:
SomeClass();
void doStuff();
} SomeClass.cpp
#include "SomeClass.hpp"
SomeClass::SomeClass(){
// ra ra ra
}
SomeClass::doStuff() {
// ra ra ra
}CallingClass.mm
#include "SomeClass.hpp"
@implementation CallingClass
-(void) execute{
SomeClass someObject;
someObject.doStuff();
}
@end错误
Undefined Symbols for arm7:
SomeClass::SomeClass() referenced from:
-[CallingClass execute:] in CallingClass.o.hpp文件设置为C++头文件,.cpp文件设置为C++源文件,.mm文件设置为Objective-C++源文件。
每个.cpp文件都存在于构建阶段/编译的源代码中。
我正在使用的一个库的项目中包含了libc++.dylib。
4.6.3 C语言方言是c11,而在4.5.2中其C99-std=c99。在两个版本的C++中,XCode语言方言和C++标准库都设置为编译器默认值。
编译器是Xcode 4.6.3中的Apple LLVM 4.2,以及4.5.2中的LLVM 4.1。
任何指导都将不胜感激。
干杯
发布于 2013-08-18 13:57:21
我曾经遇到过类似的问题,以下是我为解决此问题所做的工作:
1-在构建阶段部分中针对相应的mm文件指定-fobj-arc标志(这是可选的,可能并不总是有效)
2-确保在包含.mm (或其.h文件)的任何地方,该源代码也被标记为Objective-C++源代码,反之亦然。我知道做试错有点棘手,但基本原则是为包含的文件树维护相同的编译选项。
发布于 2013-08-18 14:28:06
已解决的
我将.hpp文件更改为.h,将.cpp文件更改为.mm。
https://stackoverflow.com/questions/18295184
复制相似问题