我正在尝试在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)
答案 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