2011-04-29 55 views
1

我有一个开源的C++项目。我的目标是用额外的代码扩展这个项目。这段代码是Objective-C代码(因为我不知道C++)。我已经找到了一种从C++类中调用Objective-C函数的方法(Calling Objective-C method from C++ method?) 但是,当我尝试使用XCode编译我的C++代码时,XCode冻结(在构建阶段没有错误)。我的问题是,如果甚至可以从仅用C++编写的项目中调用Objective-C类。我可以从C++程序中调用Objective-C类吗?

有没有人有过这方面的经验?

回答

0

Xcode的冻结是一个明确的错误,它应该编译或给出错误。尝试在项目设置中切换到另一个编译器。

只要C++代码在objective-C++模式下编译,它应该可以工作。如果文件扩展名是.mm,或者如果你明确告诉编译器,AFAIK它只能在Objective-C++模式下编译。 gcc和clang的命令行开关是-ObjC++

1

您当然可以整合这两个langs。

如果您的程序(+取决于)很大,那么Xcode可能因为多种原因而受阻。

个人而言,我一直无法像大型项目中的Xc3那样有效地使用Xc4。我花了太多时间等待它变得快速响应。我已经在Xc4中加载了大型(meta)项目,并让它在空闲的8核心机器上解析并创建几个小时(字面意义上的“派生数据”),只是在几个小时内结束这个过程。再次,它取决于项目的大小,以及它们的依赖关系。你的项目不太可能太复杂。

权衡是Xc4增加了一些重要的特征(例如,高级解析,编辑期间的编译)。有时候在Xc3中启动并最大限度地减少功能(例如代码感觉索引)是件好事,直到它为您打造。

编译不应该引起冻结(但给它一些时间来恢复),如果您还没有指定正确的语言...... Xcode中通有可能不堪重负,或者您有混合的语言 - 没有合适的编译器标志。

如果它真的很大,Xcode可以花费大量时间解析源代码,创建派生数据。

如果它仍然存在,那么发布更多信息可能是个好主意。

相关问题