【问题标题】:libsndfile on iOSiOS 上的 libsndfile
【发布时间】:2011-10-20 06:48:41
【问题描述】:

现在我尝试在iOS 上使用libsndfile 时遇到了一个奇怪的链接问题:

我在MACOSX 10.6.8 上编译了libsndfile,它通过了所有检查。但是当我将它添加到 Xcode 并尝试在 iOS 上编译它时,我收到了这些链接警告和错误:

ld: warning: in /Users/chencyz/Desktop/Development/SDK/libsndfile/lib/libsndfile.a, file was built for unsupported file format which is not the architecture being linked (i386)
Undefined symbols:
  "_sf_close", referenced from:
      SndfileHandle::SNDFILE_ref::~SNDFILE_ref()in AudioReader.o
  "_sf_error", referenced from:
      SndfileHandle::error() const in AudioReader.o
  "_sf_open", referenced from:
      SndfileHandle::SndfileHandle(char const*, int, int, int, int)in AudioReader.o
  "_sf_read_float", referenced from:
      SndfileHandle::read(float*, long long)in AudioReader.o
ld: symbol(s) not found

AudioReader只是一个使用libsndfile的程序API的简单类。

有人知道吗?

【问题讨论】:

    标签: c++ c ios libsndfile


    【解决方案1】:

    您似乎没有为 iOS 重新编译该库,您似乎正在尝试链接该库的 i386 版本。您粘贴的错误消息中的第一行非常清楚。

    iOS 在 ARM 处理器上运行,因此您需要为 ARM 构建库。

    【讨论】:

    • 谢谢 :) 现在我将libsndfile编译成i386版本,链接问题消失了,但是还有一个问题:
    • 由于 libsndfile 依赖于 libogg、libvorbis 和 libflac,所以我必须在编译 libsndfile 之前将它们全部编译,但是当我全部编译它们时,我发现 libsndfile.a 不包含 libogg。 a,libvorbis.a(and other)和libflac.a,所以如果我想在项目中使用libsndfile,我必须把它们都添加进去......
    • 这个我不太确定,你知道吗?
    • 听起来你的 Makefile 或项目文件有问题。另请注意,您说您为 i386 构建,这是不正确的,iOS 可执行文件是为 ARM 处理器构建的。
    • 现在我只能将库构建成 i386 版本,但是当我尝试将库构建成 armv6 版本时,我遇到了很多问题......比如缺少一些 C 基础头文件......跨度>
    猜你喜欢
    • 2011-06-23
    • 1970-01-01
    • 1970-01-01
    • 2017-12-08
    • 2022-01-19
    • 2020-08-10
    • 2021-07-23
    • 2014-08-06
    • 2016-03-12
    相关资源
    最近更新 更多