vc++编译libtiff4.0.4
目录
第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的更多相关文章
- 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 ...
- 用VC编译lua源码,生成lua语言的解释器和编译器
用VC编译lua源码,生成lua语言的解释器和编译器 1.去网址下载源码 http://www.lua.org/download.html 2.装一个VC++,我用的是VC6.0 3.接下来我们开始编 ...
- VC++编译GSL
目录 第1章 VC++ 1 1.1 修改行结束符 1 1.2 修改#include "*.c" 为 #include "*.inl" 2 1. ...
- 编译mapnik(win7 环境下vs2008编译mapnik 0.7.1 成功)
编译mapnik(win7 环境下vs2008编译mapnik 0.7.1 成功) ------by wangsh 2012.02.22 Mapnik 是一个开源的 Python/C++ 地图渲染引 ...
- VC编译连接选项详解
VC编译连接选项详解 大家可能一直在用VC开发软件,但是对于这个编译器却未必很了解.原因是多方面的.大多数情况下,我们只停留在“使用”它,而不会想去“了解”它.因为它只是一个工具,我们宁可把更多的精力 ...
- 迁移到MSYS2 与 Qt 工具链注意的几个事情(g++在链接时,符号依赖项查找遵循从左至右的顺序,但qmake会自动合并造成错误。使用脚本给Mingw32-make创造出一个局部的VC编译环境)
Microsoft Visual Studio 2015社区版提供了强大的开发体验,且 Qt 提供了预编译版本.然而,由于客户提出兼容Windows XP ~ Windows 8.1 这样宽泛的环境要 ...
- 编译Qt5.0连接MySql5.5数据库的驱动(5.0版本的编译,我记得5.2开始自带了)
第一步 1.准备好Mysql数据库安装文件,Qt5.0完整的离线安装包,以及Qt5.0的完整的源代码.安装好程序,假设Mysql的安装路径为:C:\MySQL5.5,Qt5.0的安装路径:C:\Qt\ ...
- VC 编译 MATLAB 的 mex 文件
VC 编译 MATLAB 的 mex 文件mex 文件是 MATLAB 调用其他程序设计语言程序或算法的接口.在 Windows 环境中,mex 文件是扩展文件名为 DLL 的动态链接库,可以在 m ...
- 在Ubuntu Server14.04上编译Android6.0源码
此前编译过Android4.4的源码,但是现在Android都到了7.0的版本,不禁让我感叹Google的步伐真心难跟上,趁这周周末时间比较充裕,于是在过去的24小时里,毅然花了9个小时编译了一把An ...
随机推荐
- java提高篇---ArrayList
一.ArrayList概述 ArrayList是实现List接口的动态数组,所谓动态就是它的大小是可变的.实现了所有可选列表操作,并允许包括 null 在内的所有元素.除了实现 List 接口外,此类 ...
- java实现UDP协议传输DatagramSocket
摘自:http://blog.csdn.net/wintys/article/details/3525643/ Server端. package com.topca.server; import ja ...
- RabbitMQ系列二(构建消息队列)
从AMQP协议可以看出,MessageQueue.Exchange和Binding构成了AMQP协议的核心.下面我们就围绕这三个主要组件,从应用使用的角度全面的介绍如何利用RabbitMQ构建消息队列 ...
- Hashtable与ConcurrentHashMap区别
Hashtable与ConcurrentHashMap区别 ConcurrentHashMap融合了hashtable和hashmap二者的优势. hashtable是做了同步的,是线性安全的,(2) ...
- Linux加载DTS设备节点的过程(以高通8974平台为例)
DTS是Device Tree Source的缩写,用来描述设备的硬件细节.在过去的ARM Linux中,arch/arm/plat-xxx和arch/arm/mach-xxx中充斥着大量的垃圾代码, ...
- A840S黑砖修复过程(2013-05-22修改)
首先感谢su_ky大神,没有他的博客和帖子,这次救砖根本没有成功的可能.其次谢谢A840S交流群284998898的Sunny deng,没有他提供的分区镜像同样也完成不了这次的工作.现象:手机完全没 ...
- CodeForces 148B Escape
Escape Time Limit:2000MS Memory Limit:262144KB 64bit IO Format:%I64d & %I64u Submit Stat ...
- jquery append()详解
1 http://www.365mini.com/page/jquery-append.htm 2 http://blog.csdn.net/chaiyining007/article/details ...
- 并行parallel和并发concurrent的区别
http://stackoverflow.com/questions/1050222/concurrency-vs-parallelism-what-is-the-difference Concurr ...
- [转]Socket send函数和recv函数详解
1.send 函数 int send( SOCKET s, const char FAR *buf, int len, int flags ); 不论是客户还是服务器应用程序都用send函数来向TCP ...