首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Xcode4.6.3中自定义C++类的未定义符号。适用于Xcode 4.5.2

Xcode4.6.3中自定义C++类的未定义符号。适用于Xcode 4.5.2
EN

Stack Overflow用户
提问于 2013-08-18 10:42:44
回答 2查看 1.6K关注 0票数 2

我有一个在Xcode4.5.2中运行良好的iOS应用程序,但在Xcode4.6.3中,我的自定义c++类得到了未定义的符号。

SomeClass.hpp

代码语言:javascript
复制
class SomeClass{
public: 
    SomeClass();
    void doStuff();
}  

SomeClass.cpp

代码语言:javascript
复制
#include "SomeClass.hpp"

SomeClass::SomeClass(){ 
    // ra ra ra
}
SomeClass::doStuff() { 
   // ra ra ra
}

CallingClass.mm

代码语言:javascript
复制
#include "SomeClass.hpp"

@implementation CallingClass

-(void) execute{
    SomeClass someObject;
    someObject.doStuff();
}

@end

错误

代码语言:javascript
复制
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。

任何指导都将不胜感激。

干杯

EN

回答 2

Stack Overflow用户

发布于 2013-08-18 13:57:21

我曾经遇到过类似的问题,以下是我为解决此问题所做的工作:

1-在构建阶段部分中针对相应的mm文件指定-fobj-arc标志(这是可选的,可能并不总是有效)

2-确保在包含.mm (或其.h文件)的任何地方,该源代码也被标记为Objective-C++源代码,反之亦然。我知道做试错有点棘手,但基本原则是为包含的文件树维护相同的编译选项。

票数 2
EN

Stack Overflow用户

发布于 2013-08-18 14:28:06

已解决的

我将.hpp文件更改为.h,将.cpp文件更改为.mm。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18295184

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档