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 ...
随机推荐
- 2016 ACM/ICPC Asia Regional Qingdao Online HDU5889
链接:http://acm.hdu.edu.cn/showproblem.php?pid=5889 解法:http://blog.csdn.net/u013532224/article/details ...
- (7)redis pipeline
redis是一个cs模式的tcp server,使用和http类似的请求响应协议.一个client可以通过一个socket连接发起多个请求命令.每个请求命令发出后client通常 会阻塞并等待redi ...
- webserer错误
HTTP 错误 404.17 - Not Found 请求的内容似乎是脚本,因而将无法由静态文件处理程序来处理. 解决方法: C:\Program Files\Microsoft Visual Stu ...
- QQ邮箱
yourTEXThere
- git版本控制器
Git 是一个开源的分布式版本控制系统 Google用于android 源代码的管理就是Git, 它支持离线工作, 本地提交可以稍后提交到服务器上. 众多的开源项目都使用 Git 作为版本控制系统 ...
- SqlSever基础 getdate函数 返回系统当前的年月日,时分秒 毫秒
镇场诗:---大梦谁觉,水月中建博客.百千磨难,才知世事无常.---今持佛语,技术无量愿学.愿尽所学,铸一良心博客.------------------------------------------ ...
- C#其他
1.switch - if ...else if...switch(表达式) { case 值: ..... break; case 值: ..... break; default: ..... br ...
- 树的prufer编码
prufer是无根树的一种编码方式,一棵无根树和一个prufer编码唯一对应,也就是一棵树有唯一的prufer编码,而一个prufer编码对应一棵唯一的树. 第一部分:树编码成prufer序列. 树编 ...
- form 登陆跳转页面练习(未连接数据库)和连接数据库版
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding= ...
- hiho #1050 : 树中的最长路 树的直径
#1050 : 树中的最长路 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 上回说到,小Ho得到了一棵二叉树玩具,这个玩具是由小球和木棍连接起来的,而在拆拼它的过程中, ...