1.编译libiconv-1.9.2
下载:从http://ftp.gnu.org/pub/gnu/libiconv/下载最新版本
解压后,打开README.woe32文件..此文件会告诉我们怎么用MSVC来编译源码.
都是英文的,我就不翻译了..
打开VisualStudio 2008 命令提示.不是CMD..这里边已经配置好了VC的运行环境..
nmake -fMakefile.msvc NO_NLS=1 DLL=0 MFLAGS=-MT
这里.DLL=0 表示搞成lib文件.
这里MT表示使用多线程(静态链接)..我不喜欢用DLL..这样会有很多个DLL..弄不好..版本不对..程序跑不起来的
nmake -fMakefile.msvc NO_NLS=1 DLL=0 MFLAGS=-MT installPREFIX=D:\SDK\libiconv-1.9.2
install表示安装.PREFIX表示安装的目录..
两次的nmake.就可以在D:\SDK\libiconv-1.9.2找到编译好的东西了..
如果版本对的话..你也用VC2008 的话.应该不会出错..这么简单的东西..我第都失败了很多次..才找到这个方法..
2.编译zlib-1.2.3
下载:http://www.zlib.net/
打开 projects\visualc6\zlib.dsw 经vc2008转换后.
打开属性页..切换到LIB Release 把运行库改为:多线程(/MT)然后..批生成里边选择.LIB Release ..生成.
在Win32_LIB_Release目录下..zlib.lib就是编译好的静态库.
zlib.h和zconf.h 到D:\SDK\libiconv-1.9.2\include
zlib.lib 到 D:\SDK\libiconv-1.9.2\lib
目的是为了.下面编译libxml2-2.7.6的时候.都在这里找需要的库文件和头文件.
因为libxml2-2.7.6 需要上面的两个东西.
3.编译libxml2-2.7.6
下载:从http://xmlsoft.org/downloads.html下载libxml2-git-snapshot.tar.gz最新的.
解压后.打开 win32\Readme.txt.此文件教我们怎么用vc编译源码.
我们还要打开:Makefile.msvc找到zdll.lib..然后把它改为zlib.lib.如果找不到就算了..其实就是上面我们编译好的
zlib库文件.否则.会提示.LINK : fatal error LNK1181:无法打开输入文件“zdll.lib”
同样,我也不翻译的..
打开Visual Studio 2008命令提示.不是CMD..这里边已经配置好了VC的运行环境..
cscript configure.jscompiler=msvc prefix=D:\SDK\libxml2-2.7.6include=D:\SDK\libiconv-1.9.2\include lib=D:\SDK\libiconv-1.9.2\libzlib=yes static=yes cruntime=/MT
nmake /f Makefile.msvc
期间会出现:warning C4819:该文件包含不能在当前代码页(936)中表示的字符.
最后 ,可能会出现
..\testapi.c(294) : errorC2001: 常量中有换行符
..\testapi.c(295) : error C2143: 语法错误 : 缺少“)”(在“return”的前面)
这个不要紧..是测试代码..不过.改了.也好.打开testapi.c 找到294行.
if (no == 2) return((xmlChar) '?);明显少了一个单引号:改为:if (no == 2) return((xmlChar) '?');
重新 nmake /f Makefile.msvc 编译即可.
最后
nmake /f Makefile.msvc install.安装..即可在D:\SDK\libxml2-2.7.6 找到我们需要的头文件和库文件.
注意:有些版本可能出现符号重定义.或者库冲突..就是/MT的原因...我们即要一致..还要找到
# The linker and its options.
LD = link.exe
LDFLAGS = /nologo/VERSION:$(LIBXML_MAJOR_VERSION).$(LIBXML_MINOR_VERSION)
在后面加上 -NODEFAULTLIB:LIBCMT
# The linker and its options.
LD = link.exe
LDFLAGS = /nologo/VERSION:$(LIBXML_MAJOR_VERSION).$(LIBXML_MINOR_VERSION)-NODEFAULTLIB:LIBCMT
即这样 .保存,重新编译即可..
一般情况下..这样就可以编译通过..我也试过mingw编译...不过用mingw + codeblock开发...也有很多不方便的地方..
最后.还是先用VC吧..
这些开源库,,我们能熟练掌握..对写程序的效率来说还是很有帮助的..不过编译起来就不是那么方便了..