1

我最近在从以下位置实现声音处理库时遇到了一些问题:

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

4

4 回答 4

3

看起来您的代码需要与 C++ 标准库链接。在您的项目中更改这些目标构建设置并检查它是否有效,

Apple LLVM compiler language-> C++ language dialect-> Compiler default
Apple LLVM compiler language-> C++ standard library-> Compiler default

在此处输入图像描述

此外,顶部的警告表明您的库libFunFX.a不是为i386iPhone 模拟器构建的。确保这是您可以尝试的。

打开终端,转到包含库的文件夹并使用此命令

lipo -info libFunFX.a ↵
//Output: 
Architectures in the fat file: libFunFX.a are: armv7 i386 

如果它列出了 i386,那么不用担心,否则您需要与所有者沟通,向您发送一个包含设备 (armv7/armv7s) 和模拟器 (i386) 切片的 FAT 文件。


编辑

我看到您的项目中有两个库,将两者结合起来使用以下命令创建一个 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.mAppDelegate.mm
  • 将 ViewController.m 更改为ViewController.mm
  • 添加并链接上面创建的libFunFX_Univ.a文件,而不是两个单独的 .a 文件。
  • 将文件标记-fno-objc-arc为下图

在此处输入图像描述

进行这些更改后,我能够成功地为模拟器构建您的项目。我不确定你是否真的想使用 ARC,因为很多文件都被标记为手动内存管理。在这种情况下,对整个项目进行手动内存管理会更容易。只是一个建议!

希望有帮助!

于 2013-09-20T06:30:48.797 回答
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.
于 2013-09-20T06:23:16.820 回答
1

这些链接器错误与 ARC 无关,只是 C++ 运行时库尚未配置。

现在你有两个选择;旧的libstdc++或新的libc++,我无法从错误消息中看出你应该使用哪些,所以你必须尝试:

在此处输入图像描述

此外,它看起来.../SoundsEffects_ARC.a还没有为 iPhone 模拟器编译(缺少架构 i386 是这里的线索)。如果您有源代码,最简单的解决方法是创建一个 Xcode 工作区并将该项目包含在工作区和配置的依赖项中,然后 Xcode 将在需要时为 iPhone 模拟器构建它。如果您没有源代码,那么您很不走运,需要一个包含 i386 架构代码的胖版本存档。

于 2013-09-20T06:28:55.103 回答
0

我认为这个错误不是 arc-non arc 问题。这是框架/库链接错误

检查您是否已集成所有框架作品

于 2013-09-20T06:42:41.490 回答