2013-08-22 34 views
0

我试图在Objective-C应用程序中添加对iZotope(音频效果)的支持。链接到Objective-C项目中的.a C++库

在集成过程中,我遇到了一些与将iZotope C++库链接到我的Xcode项目相关的问题。

由于这一点我没有做过别的什么事情比:

  • 添加库(.a)中的具体目标> MyTargetName>构建阶段>与库链接二进制文件
  • 添加的头文件该库到PROJECT> MyProjectName>构建设置>搜索路径>标题搜索路径

我还没有写任何代码,根本没有。我现在的目标是让我的项目进行编译,就像在添加库之前一样。

这里是编译器输出(https://gist.github.com/dornad/6310107)的链接。对我来说,似乎Xcode不知道C++ std库,所以它失败壮观。

任何想法?

+0

对于新库,您还需要添加库搜索路径。该属性紧靠标题搜索路径。从编译器的角度来看,你需要一个“-l”标志来指定文件名,你已经通过将它放在Link Binaries with Libraries中来完成,你还需要“-L”来告诉编译器在哪里搜索该库因此库搜索路径属性。 – Kuoni

+0

我不确定我在追随。所以如果我的文件是libCoreFXSim.a,我需要在库搜索路径下添加-LlibCoreFXSim,对吧? – dornad

+0

对不起,我困惑你。如果您的XCodeProject旁边有一个名为CoreFX的文件夹,并且其中有一个名为“libCoreFXSim.a”的库,您可以将“$(SRCROOT)/ CoreFX”添加到**库搜索路径**中。 SRCROOT和其他变量记录在[这里](https://developer.apple.com/library/mac/documentation/DeveloperTools/Reference/XcodeBuildSettingRef/1-Build_Setting_Reference/build_setting_ref.html)。这样XCode会在寻找你的库时想到在那个文件夹中搜索。 – Kuoni

回答

0

无法找到标准C++库。可能您的项目文件的扩展名是.m而不是.mm,这是编译C++所必需的。

+0

我正在阅读有关在C++库中创建Objective-C包装的信息。我想保留文件原样(.m),而不是切换到.mm,如下所述:http://philjordan.eu/article/mixing-objective-c-c++-and-objective-c++ – dornad

+0

或者说,我可以在一个项目中保存.mm和.m的混合吗?即围绕C++库的包装将是Objective-C++,而项目的其余部分将保持原样? – dornad

+0

是的,你可以,这就是我在Cocos2d-x的项目中所做的。当我真的需要纯粹的Obj-C代码时,我主要有CPP文件,一些.MM作为桥梁(混合使用Obj-C的C++)和几个.M文件。 .M用Objective-C编译器编译,而.MM用Objective-C++编译器编译。 Objective-C编译器不了解标准C++库。 – Kuoni