目录

第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. java-资源管理器try-with-resource

    在java编程中会遇到很多关闭资源的问题,但是,往往我们的关闭不能百分百正确,所以java7中出现了新的资源管理器方法try-with-resource,这是一项重要的改进,因为没人能再手动关闭资源时 ...

  2. linux定时任务crontab

    今天在执行mysql定时任务语句时候问了很多大拿,都建议我不要随便在生产环境下写定时任务这样的语句,有的说会有延时,那样的话就不准了,有的说在.系统时间和本地时间不一致怎么办?后来就建议我用linux ...

  3. SqlSever基础 cast 将getdate返回的时间转换成字符串

    镇场诗:---大梦谁觉,水月中建博客.百千磨难,才知世事无常.---今持佛语,技术无量愿学.愿尽所学,铸一良心博客.------------------------------------------ ...

  4. django 的auth.authenticate返回为None

    使用auth.authenticate(username= username,passowrd=passowrd),这个用户认证时候,明明数据库中有记录,但是返回就None 我的错误点比较多: 1.我 ...

  5. 8.Methods(一)

    1.Instance Constructors and Classes (Reference Types) Constructors methods : 1.allow an instance of ...

  6. 嵌套结构使用:struc1-struc2-XXX

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

  7. 把多个JavaScript函数绑定到onload事件处理函数上

    为了让函数只在页面加载完毕后才得到执行,我们会把函数绑定到onload事件上: window.onload = userFunction 但如果有两个函数:firstFunction() 和 seco ...

  8. python中的is、==和cmp()比较字符串

    python 中的is.==和cmp(),比较字符串 经常写 shell 脚本知道,字符串判断可以用 =,!= 数字的判断是 -eq,-ne 等,但是 Python 确不是这样子地.所以作为慢慢要转换 ...

  9. C#形参,实参,值传递参数,引用传递参数,输出参数,参数数组的学习

    1)形参 形参顾名思义就是形式上的参数,不是实际的参数,它代替实际传入方法的值.在方法体代码中代表了值本身参与运算.形参定义于参数中,它不同于方法体内局部变量,因为是一个变量,在它的作用域内不允许存在 ...

  10. HDU 1003 Max Sum 解题报告

    题目大意:求一串数字中,几个连续数字加起来最大值,并确定起始和最末的位置. 思路:这是一题DP题,但是可以用尺取法来做.我一开始不会,也是看了某大神的代码,然后有人告诉我这是尺取法,现在会了. //尺 ...