如何在objective-c ++中编译特定文件,在objective-c中编译项目的其余部分

时间:2011-04-22 14:00:35

标签: objective-c xcode compilation objective-c++ conditional-compilation

我目前正忙于一个项目,我需要使用外部附件来阅读Mifare 1k tags

附件提供了一个SDK,用(Objective?)C ++编写,我按照提供的指令将XCode设置为“将源代码编译为:Objective-C ++”并在“其他链接器标志”中添加“-Obj-C ++”

SDK编译好了,但麻烦的是我已经在项目中使用了几个库(例如ASIHTTPRequest,JSONKit,...),由于这些库中的那些新设置,我得到了编译问题。如果我切换回以前的设置,我会在阅读器的SDK

中遇到编译问题

问题是:有没有办法只将SDK中的类编译为C ++,将项目的其余部分编译为objective-c?

编辑:SDK文件仅包含.h(和链接库)

感谢您的帮助, 麦克

4 个答案:

答案 0 :(得分:24)

从文件导航器中选择要编译为Objective C ++的文件,然后在文件检查器视图中选择文件类型。这是在Xcode 4中,但Xcode 3中有类似的机制。

Selecting File Type from the file inspector

答案 1 :(得分:5)

尝试将包含库标题的文件重命名为myClass.h for interface,将myClass.mm重命名为实现文件。这会强制将文件编译为objective-c ++。

答案 2 :(得分:4)

我已经解决了这个问题:

  1. 您应该将“根据文件类型”设置为“Complile Sources As”,
  2. 将“-ObjC ++”设置为“Other Linker Flags”
  3. 最后,你应该将文件的后缀修改为.mm那个引用 图书馆方法

答案 3 :(得分:0)

好吧,在构建阶段标签中,有一个部分编译源。对于要使用 Objective-C++ 编译器的文件添加标志:-xobjective-c++

在 Xcode 12.5 中测试