目录

第1章简介    1

第2章命令行编译    2

2.1 编译    2

2.1.1 使用VC++2010编译    2

2.1.2 使用VC++6编译    4

2.2 生成的文件    5

第3章 IDE编译    7

3.1 编译时重定向    7

3.2 编译需要的文件    7

3.3 编译时定义的宏    8

第1章简介

libtiff是一个用于读写.tif文件的开源C函数库。

它的下载网址如下:

ftp://ftp.remotesensing.org/pub/libtiff/

第2章命令行编译

2.1 编译

解压libtiff 4.0.4至W:\tiff-4.0.4目录。目录结构如下图所示:

再根据W:\tiff-4.0.4复制出tiff-4.0.4-vc6和tiff-4.0.4-vc2010,如下图所示:

tiff-4.0.4-vc6        将使用vc6编译

tiff-4.0.4-vc2010    将使用vc2010编译

2.1.1 使用VC++2010编译

"开始"菜单【Microsoft Visual Studio 2010】【Visual Studio Tools】下有四个快捷方式,它们都可以打开DOS命令窗口,如下图所示:

这四个快捷方式的含义如下:

Visual Studio Command Prompt (2010)调用32位的编译程序,生成32位的程序;

Visual Studio Itanium Cross Tools Command Prompt (2010) 调用32位的编译程序,生成64位的Itanium程序;

Visual Studio x64 Cross Tools Command Prompt (2010) 调用32位的编译程序,生成64位的x64程序;

Visual Studio x64 Win64 Command Prompt (2010) 调用64位的编译程序,生成64位的x64程序。

如果要编译生成32位的程序,可运行Visual Studio Command Prompt (2010);

如果要编译生成64位的x64程序,可运行Visual Studio x64 Cross Tools Command Prompt (2010)或Visual Studio x64 Win64 Command Prompt (2010),后者要求Windows是64位的;

如果要编译生成64位的Itanium程序,可运行Visual Studio Itanium Cross Tools Command Prompt (2010)。

这里编译生成32位的程序,所以运行Visual Studio Command Prompt (2010)。

依次运行如下几行命令

cd /d W:\tiff-4.0.4-vc2010

nmake /f makefile.vc

如下图所示:

等待一会儿,编译工作就完成了,如下图所示:

2.1.2 使用VC++6编译

打开DOS命令窗口,然后依次运行如下几行命令

"C:\Program Files\Microsoft Visual Studio\VC98\Bin\VCVARS32.BAT"

cd /d W:\tiff-4.0.4-vc6

nmake /f makefile.vc

如下图所示:

等待一会儿,编译工作就完成了,如下图所示:

2.2 生成的文件

上一节编译都生成了哪些文件?使用Beyond Compare软件比较一下就知道了,如下图所示:

最重要的几个文件都在libtiff目录下:

libtiff.dll        libtiff动态库

libtiff_i.lib    libtiff动态库的导入库

libtiff.lib        libtiff静态库

还有tif_config.h和tiffconf.h,它们是由tif_config.vc.h和tiffconf.vc.h复制而得到的。

使用 nmake /f makefile.vc clean清理编译产生的文件之前,请把上述重要的文件复制出来,否则将会被删除掉。

第3章 IDE编译

3.1 编译时重定向

上一章的编译很简单,但是有几个问题需要搞清楚:

1、编译时用到了哪些文件?

2、编译时定义了哪些宏?

为此,在上一章编译时把命令nmake /f makefile.vc更改为

nmake /f makefile.vc clean all > vc.txt

就是编译前清理一下,然后把输出重定向到文件vc.txt里。

编译完成后,查看vc.txt文件

编译用到了哪些文件,定义了哪些宏,一目了然。

3.2 编译需要的文件

port和tools的编译不是重点,这里只说明libtiff的编译。它需要如下文件:

1、W:\tiff-4.0.4-vc6\libtiff\tif_*.c,但不包括 tif_lzma.c 和 tif_win32.c;

2、W:\tiff-4.0.4-vc6\libtiff\tif_stream.cxx

总计39个文件。

3.3 编译时定义的宏

编译时定义的宏有14个,具体如下:

_CRT_SECURE_NO_DEPRECATE

AVOID_WIN32_FILEIO

CCITT_SUPPORT

CHECK_JPEG_YCBCR_SUBSAMPLING

DEFAULT_EXTRASAMPLE_AS_ALPHA

FILLODER_LSB2MSB

LOGLUV_SUPPORT

LZW_SUPPORT

NEXT_SUPPORT

PACKBITS_SUPPORT

STRIPCHOP_DEFAULT=TIFF_STRIPCHOP

STRIP_SIZE_DEFAULT=8192

THUNDER_SUPPORT

TIF_PLATFORM_CONSOLE

有了以上信息,IDE里编译libtiff就是非常简单的事情了。

vc++编译libtiff4.0.4的更多相关文章

  1. VC++编译MPIR 2.7.0

    目录 第1章编译    2 1.1 简介    2 1.2 下载    3 1.3 解决方案    4 1.4 创建项目    5 1.5 复制文件树    6 1.6 不使用预编译头文件    8 ...

  2. 用VC编译lua源码,生成lua语言的解释器和编译器

    用VC编译lua源码,生成lua语言的解释器和编译器 1.去网址下载源码 http://www.lua.org/download.html 2.装一个VC++,我用的是VC6.0 3.接下来我们开始编 ...

  3. VC++编译GSL

    目录 第1章 VC++    1 1.1 修改行结束符    1 1.2 修改#include "*.c" 为 #include "*.inl"    2 1. ...

  4. 编译mapnik(win7 环境下vs2008编译mapnik 0.7.1 成功)

    编译mapnik(win7 环境下vs2008编译mapnik 0.7.1 成功) ------by  wangsh 2012.02.22 Mapnik 是一个开源的 Python/C++ 地图渲染引 ...

  5. VC编译连接选项详解

    VC编译连接选项详解 大家可能一直在用VC开发软件,但是对于这个编译器却未必很了解.原因是多方面的.大多数情况下,我们只停留在“使用”它,而不会想去“了解”它.因为它只是一个工具,我们宁可把更多的精力 ...

  6. 迁移到MSYS2 与 Qt 工具链注意的几个事情(g++在链接时,符号依赖项查找遵循从左至右的顺序,但qmake会自动合并造成错误。使用脚本给Mingw32-make创造出一个局部的VC编译环境)

    Microsoft Visual Studio 2015社区版提供了强大的开发体验,且 Qt 提供了预编译版本.然而,由于客户提出兼容Windows XP ~ Windows 8.1 这样宽泛的环境要 ...

  7. 编译Qt5.0连接MySql5.5数据库的驱动(5.0版本的编译,我记得5.2开始自带了)

    第一步 1.准备好Mysql数据库安装文件,Qt5.0完整的离线安装包,以及Qt5.0的完整的源代码.安装好程序,假设Mysql的安装路径为:C:\MySQL5.5,Qt5.0的安装路径:C:\Qt\ ...

  8. VC 编译 MATLAB 的 mex 文件

    VC 编译 MATLAB 的 mex 文件mex 文件是 MATLAB 调用其他程序设计语言程序或算法的接口.在 Windows 环境中,mex 文件是扩展文件名为 DLL 的动态链接库,可以在 m ...

  9. 在Ubuntu Server14.04上编译Android6.0源码

    此前编译过Android4.4的源码,但是现在Android都到了7.0的版本,不禁让我感叹Google的步伐真心难跟上,趁这周周末时间比较充裕,于是在过去的24小时里,毅然花了9个小时编译了一把An ...

随机推荐

  1. 2015 AlBaath Collegiate Programming Contest B

    Description Yaaaay, Haven't you heard the news? Bakaloria results are out! And Reem had very good gr ...

  2. CentOS 6.3下源码安装LAMP(Linux+Apache+Mysql+Php)环境

    一.简介 什么是LAMP    LAMP是一种Web网络应用和开发环境,是Linux, Apache, MySQL, Php/Perl的缩写,每一个字母代表了一个组件,每个组件就其本身而言都是在它所代 ...

  3. placeholder 解决UITextField中placeholder和text文本同时显示的问题

    TextField都使用了placeholder属性,但在代码中又设置了text属性,因此ViewController会同时显示placeholder文本和text文本. 这个问题让我彻底崩溃.按道理 ...

  4. application 网站计数器

    <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding= ...

  5. UML分析与设计

    考点: 掌握面向对象的分析与设计 掌握UML描述方法 用例图.类图.序列图.状态转换图 类图:类的属性.方法的识别:类间的各种关系 类图:实体.联系 各种关系图例: 泛化:取公共属性 关联分为聚合.组 ...

  6. 使用escape编码地址栏中的中文字符

    在通过地址栏传递参数的时候,有时候会遇到中文参数,在获取这种中文参数值得时候, 往往会出现乱码, 解决办法如下: 在传递参数的使用 escape 函数进行编码,获取的时候再进行解码即可. 例如: va ...

  7. 【BZOJ】4636: 蒟蒻的数列

    4636: 蒟蒻的数列 Time Limit: 30 Sec  Memory Limit: 256 MBSubmit: 145  Solved: 71[Submit][Status][Discuss] ...

  8. DOM 表单应用

    1.大小写转换 <script> var a='aaa'; var b='AaA'; var c='BbB'; //alert(c.toLowerCase()); //把含有大写的字母转换 ...

  9. MongoDB入门教程之C#驱动操作实例

    实体类: using MongoDB.Bson; namespace WindowsFormsApp { class User { //public ObjectId _id; //BsonType. ...

  10. 个人博客Week3

    必应软件客户端测评 话不多说 先来一张高大上的客户端界面截图! 首先 映入眼帘的就是四个主要的模块!(1)词典(2)例句(3)翻译(4)应用 (1)词典: 在查询词条的时候,一旦查询了一个词条就不能够 ...