VS2012下编译jpeg编解码库:libjpeg.lib

版权声明:本文为博主原创文章,如转载请注明出处. https://blog.csdn.net/zyj_zhouyongjun183/article/details/78990529

整个编译工程已经上传到CSDN:libjpeg编译工程

工作前准备

从IJG网站上下载最新版本的Libjpeg源码,网址如下:
http://www.ijg.org/
我下载时的版本是: jpegsr9b;
当然请安装VS2012的C++编译环境;

理清编译libjpeg依赖文件

因为我们下载的jpegsr9b.zip解压后不仅仅是包含编译Libjpeg.lib的源文件,也包含很多测试用的sample,这些sample是我们编译lib时不需要的.
首先打开maketfil.v10这个文本文件,看见有下面内容:

<ItemGroup>
    <Filter Include="Source Files">
      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
      <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
    </Filter>
    <Filter Include="Header Files">
      <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
      <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
    </Filter>
    <Filter Include="Resource Files">
      <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
      <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
    </Filter>
  </ItemGroup>
  <ItemGroup>

我们通过Header Files找到编译lib时需要的头文件,然后拷贝到一个新建的目录:include/目录下;通过Source Files,找到编译lib时需要的源文件,拷贝到新建目录:source/目录下;

其中jconfig.h这个头文件不能用默认的,需要将jconfig.vc改名成jconfig.h使用;

建立编译工程

在VS2012中新建win32工程,并且选择编译静态库;如下图:
工程建立
右键选择左侧的”头文件”和”源文件”,并且分别选择添加->现有相,分别将上一个步骤理出来的include目录中的头文件和source目录中的源文件添加到工程中;添加后的结果如下图:
jpeg工程目录结构

依次点击”项目”->”属性”->”配置属性”->”C/C++”->”常规”,在附加包含目录里面添加之前上面include目录的路径,不然编译时会出现找不到头文件的错误,如下图:
配置属性

在选择预处理器,在预处理器定义里添加这两个宏:

_CRT_SECURE_NO_DEPRECATE;_SCL_SECURE_NO_DEPRECATE

因为libjpeg的源文件中用了很多在VS2012中认为不够安全的函数,如果没有上面的预处理定义,在编译时就会报错,如下类似错误:

:\vs_programer\libjpeg\libjpeg\source\jdmarker.c(331): error C4996: ‘strncpy’: This function or variable may be unsafe. Consider using strncpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
1> c:\program files (x86)\microsoft visual studio 11.0\vc\include\string.h(191) : 参见“strncpy”的声明

加上上面说的两个预处理定义之后,编译器就不会再理会这种warning;然后按F7,编译整个项目,最后成功生成Libjpeg.lib,如下图:
编译

完工,生成的libjpeg.lib就可以加入其他工程中做编解码jpeg图片使用了;

阅读更多
换一批

没有更多推荐了,返回首页