为iOS编译libjpeg

时间:2012-10-30 05:16:56

标签: objective-c xcode symbols libjpeg missing-symbols

我正在尝试在XCode中编译iOS 6项目,我正在使用以下标题,其中包含我需要的功能:

#include "cdjpeg.h"     /* Common decls for cjpeg/djpeg applications */
#include "transupp.h"   /* Support routines for jpegtran */

这些直接来自 jpegtran 实用程序来源。我之前安装了jpeg库,在/ usr / local / lib /中有libjpeg.a。 但是,当我尝试编译时,我收到错误“架构i386的未定义符号”或“架构armv7的未定义符号”,具体取决于目标是否是iPhone模拟器或不。 以下是无法找到符号的关键字:

  "_jpeg_stdio_src"
  "_jpeg_finish_compress"
  "_jcopy_markers_execute"
  "_jpeg_copy_critical_parameters"
  "_jtransform_adjust_parameters"
  "_jpeg_destroy_compress"
  "_jtransform_execute_transform"
  "_jpeg_finish_decompress"
  "_jpeg_read_header"
  "_jtransform_request_workspace"
  "_jpeg_write_coefficients"
  "_jpeg_read_coefficients"
  "_jpeg_destroy_decompress"
  "_jpeg_stdio_dest"
  "_jcopy_markers_setup"

之前我遇到过丢失的符号错误,并且总是放弃使用第三方库,但在这种情况下,没有办法解决。

我在这里做错了什么?

编辑:我已将libjpeg.a添加到项目设置中,但它确实更进一步,但现在停止了:

Apple clang version 4.1 (tags/Apple/clang-421.11.66) (based on LLVM 3.1svn)
Target: i386-apple-darwin12.2.0
Thread model: posix
"lots-of-debug-paths"
ld: library not found for -ljpeg
clang: error: linker command failed with exit code 1 (use -v to see invocation)

2 个答案:

答案 0 :(得分:1)

我不知道你是如何编译它的。但是你需要更改make install才能在i386和armv7中编译它。我很确定你只是运行make,所以它为你编译了mac,这肯定是x84_64拱门,这肯定不是你想要的

您可以查看

lipo -info  /usr/local/lib/libjpeg.a // if libjpeg.a is at this path

file /usr/local/lib/libjpeg.a

答案 1 :(得分:1)

我最近也需要iOS libjpeg(作为另一个第三方库的依赖)

我最终只使用libjpeg-turbo,它带有预编译的胖二进制文件

Architectures in the fat file: libjpeg.dylib are: i386 x86_64 armv6 armv7 armv7s arm64