目录

第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. syslog及syslog-ng详解 日志服务器

    服务器的日志对系统工程师来说是至关重要的,一旦服务器出现故障或被入侵,我们需要查看日志来定位问题的关键所在,所以说对于线上跑的服务器而言日志应该合理的处理及管理.下面来   服务器的日志对系统工程师来 ...

  2. ECharts开始

    为ECharts准备一个具备大小(宽高)的Dom(当然可以是动态生成的) //from echarts example <body> <div id="main" ...

  3. Sql合并两个select查询

    现有2个查询,需要将每个查询的结果合并起来(注意不是合并结果集,因此不能使用union),可以将每个查询的结果作为临时表,然后再从临时表中select所需的列,示例如下:   SELECT get.d ...

  4. [HDOJ3709]Balanced Number(数位dp)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3709 题意:求区间[L,R]内每一个数中是否存在一位,使得左边的各位数*距离=右边的各位数*距离(自己 ...

  5. [C和指针]第五部分

    声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...

  6. FJNU 1152 Fat Brother And Integer(胖哥与整数)

    FJNU 1152 Fat Brother And Integer(胖哥与整数) Time Limit: 1000MS   Memory Limit: 257792K [Description] [题 ...

  7. SQL:with ties

    摘自: http://www.cnblogs.com/huanghai223/archive/2010/10/26/1861961.html “从100万条记录中的得到成绩最高的记录”.看到这个题目, ...

  8. LINQ之路 5:LINQ查询表达式

    书写LINQ查询时又两种语法可供选择:方法语法(Fluent Syntax)和查询表达式(Query Expression). LINQ方法语法的本质是通过扩展方法和Lambda表达式来创建查询.C# ...

  9. updatePanel导致JS失效的解决办法(转)

    吐槽下,维护别人之前做的项目好蛋疼,整个页面都是用微软的ajax框架. 今天给repeater用JS写一个hover事件 <script type="text/javascript&q ...

  10. TCP三次握手及四次挥手详细 转

    一.TCP报文格式        TCP/IP协议的详细信息参看<TCP/IP协议详解>三卷本.下面是TCP报文格式图: 图1 TCP报文格式 上图中有几个字段需要重点介绍下:      ...