如何在xCode中使用jpeglib

时间:2012-11-03 20:49:36

标签: iphone ios xcode libjpeg

我正在开发一款iPhone应用程序,而且我对一切都很陌生。我正在使用Mountain Lion OS X 10.8并使用xCode v4.5。我的项目需要JPEG处理功能,我想使用libjpeg(http://www.ijg.org/)库。我尝试了一些不同的方法,但有点天真,我不确定如何开始。下载软件包后,我通常会./configure;制作并安装。现在我在(/ usr / local / lib)和(/ usr / local / lib)下的(/ usr / local / lib)下有(jconfig.h,jerror.h,jmorecfg.h,jpeglib.h)但是我不知道如何在我的xCode项目中链接/使用它。 任何人都可以将我链接到教程或给我一个正确的方向吗? 如果有人成功安装并使用了jpeg库,请帮助..

1 个答案:

答案 0 :(得分:3)

这有点痛苦,因为你需要为两种架构编译LibJPEG:ARM,iOS,x86,模拟器。

  1. 您最好的选择是使用NSImageCGImage。 iOS上已经有一个随系统提供的JPEG库,因此您不需要使用LibJPEG。

  2. 另一种方法是将LibJPEG源直接放入您的项目(包括*.c文件)。这样,它们将针对不同的体系结构(模拟和部署)正确构建。

  3. 您也可以为ARM构建,然后忘记运行模拟器。

  4. 或者您可以将LibJPEG构建为胖二进制文件,方法是将其编译两次,并将每个编译中生成的库(libjpeg.a)与libtool组合。

    libtool -static path/to/arm/libjpeg.a path/to/x86/libjpeg.a -o libjpeg.a
    
  5. 您可以看到为何建议使用NSImageCGImage。最好使用已安装的库,而不是尝试构建和安装新库。

    如何制作胖静态库

    因为听起来你想要艰难地做事,这里有一个如何为i386和ppc架构构建胖静态库的例子。这是在PowerPC OS X机器上完成的,如果要为ARM和i386编译,则必须进行调整。

    请注意,您必须指定--host--build进行交叉编译。以下值对我的计算机是正确的,但我确定它们对您的计算机是错误的。

    $ cd jpeg-8d
    $ mkdir build-ppc build-i386
    $ cd build-ppc
    $ ../configure CFLAGS='-arch ppc -O2 -g' LDFLAGS='-arch ppc' \
            --enable-static --disable-shared
    $ make -j2
    $ cd ../build-i386
    $  ../configure CFLAGS='-arch i386 -O2 -g' LDFLAGS='-arch i386' \
            --enable-static --disable-shared \
            --build=powerpc-apple-darwin9.8.0 --host=i386-apple-darwin9.8.0
    $ make -j2
    $ cd ..
    $ file build-ppc/.libs/libjpeg.a 
    build-ppc/.libs/libjpeg.a: current ar archive random library
    $ file build-i386/.libs/libjpeg.a 
    build-i386/.libs/libjpeg.a: current ar archive random library
    $ libtool -static build-*/.libs/libjpeg.a -o libjpeg.a
    $ file libjpeg.a
    libjpeg.a: Mach-O universal binary with 2 architectures
    libjpeg.a (for architecture i386):      current ar archive random library
    libjpeg.a (for architecture ppc):       current ar archive random library