1

我正在尝试在 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"

我以前遇到过缺少符号的错误,并且总是最终放弃使用 3rd 方库,但在那种特殊情况下,没有办法。

我在这里做错了什么?

编辑:我已将 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)
4

2 回答 2

2

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

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

Architectures in the fat file: libjpeg.dylib are: i386 x86_64 armv6 armv7 armv7s arm64 
于 2015-11-17T07:52:50.750 回答
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
于 2012-10-30T08:43:44.293 回答