我在实施声音处理库时最近遇到了一些问题:
http://www.izotope.com/tech/izomobile/djfx.asp
我认为我的实现问题是启用ARC而库是非Arc C ++实现。我尝试使用该库为文件添加-fno-objc-arc,并尝试将viewcontrollers扩展名更改为.mm而不是.m。请查看附件中的图片,如果有其他人遇到此问题,请告诉我。
感谢。
修改
您可以从以下网址下载示例项目链接:https://www.dropbox.com/s/ljvnevkwkyplp2k/SoundEffects_ARC.zip
答案 0 :(得分:3)
我只是在此基本步骤,按照或与您已经完成的步骤进行比较。
Select Project Form Project Manager
|
|
Targets
|
|
Build Phases
|
|
Compile Sources
|
|
Select File that you Want to crate as ARC. (You can also Select Multiple File name from here)
|
|
Press "ENTER" key
|
|
Popup Box/Window is displayed
|
|
Write here - '-fno-objc-arc'
|
|
And again Press 'ENTER' key.
Your selected file is being ARC.
答案 1 :(得分:3)
看起来您的代码需要与C ++标准库链接。更改项目中的这些目标构建设置,并检查它是否有效,
Apple LLVM compiler language-> C++ language dialect-> Compiler default
Apple LLVM compiler language-> C++ standard library-> Compiler default
此外,顶部的警告表示您的库libFunFX.a
不是为i386
构建的,即iPhone模拟器。确保这是你可以尝试的。
打开终端,转到包含库的文件夹并使用此命令
lipo -info libFunFX.a ↵
//Output:
Architectures in the fat file: libFunFX.a are: armv7 i386
如果它列出了i386,那么不用担心,否则你需要与所有者通信,向你发送一个FAT文件,其中包含设备(armv7 / armv7s)和模拟器(i386)的切片。
修改强>
我看到你的项目中有两个库,它们都用以下命令组合创建一个FAT文件。
lipo -create libFunFX.a libFunFXSim.a -output libFunFX_Univ.a
现在如果你检查,
lipo -info libFunFX_Univ.a
//Output
Architectures in the fat file: libFunFX_Univ.a are: armv7 (cputype (12) cpusubtype (11)) i386
项目文件的更改
AppDelegate.m
更改为AppDelegate.mm
ViewController.mm
libFunFX_Univ.a
文件,而不是两个单独的.a文件。-fno-objc-arc
标记为如下图像
进行这些更改后,我能够成功为模拟器构建项目。我不确定您是否真的想使用ARC,因为很多文件都标记为手动内存管理。在这种情况下,对整个项目进行手动内存管理会更容易。只是一个建议!
希望有所帮助!
答案 2 :(得分:1)
这些链接器错误与ARC无关,只是没有配置C ++运行时库。
现在你有两个选择;旧的libstdc++
或新libc++
我无法从错误消息中告诉您应该使用哪些消息,因此您必须进行试验:
此外,似乎还没有为iPhone模拟器编译.../SoundsEffects_ARC.a
(缺少架构i386就是这里的线索)。解决这个问题的最简单方法是,如果你有源代码,就是创建一个Xcode工作区并在工作区中包含该项目并配置依赖项,然后Xcode将根据需要为iPhone模拟器构建它。如果您没有源代码,那么您运气不好,需要一个包含i386 arch代码的胖版本的存档。
答案 3 :(得分:0)
我认为这个错误不是弧 - 非弧问题。这是框架工作/ lib链接错误
检查您是否已整合所有框架作品