存档

文章标签 ‘win32’

Visual C++ 2008编译libpng

2009年11月9日 dipplum 没有评论

1. 主页 http://www.libpng.org/pub/png/libpng.html

2. 最新稳定版本 1.2.40

    源码下载 http://download.sourceforge.net/libpng/lpng1240.zip

3. 编译依赖

    依赖zlib。要求名为zlib的目录位于和libpng源码平级的目录下。libpng会自行编译zlib的源码,而zlib 1.2.3版本中的汇编代码在VC 2008下编译存在问题,参见zlib的编译说明

4. 编译方法

    打开源码中的projects\vc71\libpng.sln工程文件。编译DLL ASM Release和LIB ASM Release就可以了。会得到libpng.lib、libpng13.lib、libpng13.dll。

5. 注意

    ligpng会编译自己的zlib1.dll和zlib.lib,不知道编译参数和zlib自己的工程文件是否一样,也不知道和zlib工程文件编译出的dll和lib会不会冲突。这个问题留待考察。

分类: 开源软件 标签: , , ,

Side-by-Side Assembly相关

2009年11月9日 dipplum 没有评论

什么是Side-by-Side Assembly?

Side-by-Side Assembly(建称SxS)是微软在Visual Studio 2005(Windows 2000?)中引入的技术,用来解决Windows平台上的DLL Hell问题。DLL Hell的介绍可以看Wikipedia的文章。简单的说,DLL Hell窘境包括了Windows应用程序依赖的DLL带来的若干问题,包括同名DLL、DLL升级、DLL载入顺序等等。

Side-by-Side Assembly按照我的理解,是一种特殊的DLL,按照Side-by-Side Assembly的要求开发的,并用XML格式的manifest和policy文件描述的。所有的系统Side-by-Side Assembly都安装在Windows目录下的WinSxS子目录里,有一堆的目录、DLL和XML文件。

Side-by-Side Assembly的使用参见MSDN。但MSDN有把简单问题复杂化的毛病,原理讲的很多,实际例子举的很少,不看也罢。

使用Side-by-Side Assembly包括两个方面,一方面是自己开发的应用程序和DLL如何依赖Side-by-Side Assembly,另一方面是如何开发自己的Side-by-Side Assembly。如果只关心第一个方面,问题要简单的多。不需要关心第二个方面的原因如下。

阅读全文…

分类: Windows 标签: , ,

Visual C++ 2008编译lua

2009年11月9日 dipplum 没有评论

1. 项目主页 http://www.lua.org/

2. 当前最新稳定版本 5.1.4,2008年8月发布

    源码下载 http://www.lua.org/ftp/lua-5.1.4.tar.gz

3. VC编译方法

    解压后,用Visual Studio 2008命令行环境进入lua目录,运行etc\luavs.bat。之后会在src目录下生成lua.exe、luac.exe、lua51.dll

4. 注意

    默认的luavs.bat只会生成DLL,如果需要编译静态链接库,可以自行修改luavs.bat,修改两处地方

    1. 删除cl.exe的编译选项 /DLUA_BUILD_AS_DLL

    2. 生成DLL的命令改成 lib.exe /nologo /out:lua.lib *.obj

分类: 开源软件 标签: , ,

Visual C++ 2008编译zlib

2009年11月8日 dipplum 没有评论

记录下Visual C++ 2008编译zlib的过程,以备不时之需。

1. 项目主页 http://www.zlib.net/

2. 当前最新稳定版本 1.2.3,2005年7月发布

    源码下载 http://www.zlib.net/zlib123.zip

3. VC编译方法

    解压后,打开项目文件projects\visualc6\zlib.dsw,新版本的VC会提示要做工程格式转换。一般只编译其中zlib项目的DLL Release和LIB Release就好了。

4. Bug

    如果想编译zlib的DLL ASM Release和LIB ASM Release,会出现下面的错误:

contrib\masmx86\inffas32.asm(647) : error A2070:invalid instruction operands
contrib\masmx86\inffas32.asm(649) : error A2070:invalid instruction operands
contrib\masmx86\inffas32.asm(663) : error A2070:invalid instruction operands
contrib\masmx86\inffas32.asm(720) : error A2070:invalid instruction operands

    这是因为VC2008的MASM语法更严格了,导致之前的代码语法检查不过。参照这里的说明,把inffas32.asm改好就OK了。或者下载我改好的

分类: 开源软件 标签: , , ,

Visual C++ 2008编译SDL小结

2009年11月8日 dipplum 没有评论

最近在Windows平台上编译SDL,过程记录下来备忘。说是用VC 2008编译,其实和用VC 2005和VC 2010编译过程都是一样的。

1. SDL 主页 http://www.libsdl.org/

2. 当前最新稳定版本 1.2.14

    源码 http://www.libsdl.org/release/SDL-1.2.14.zip

3. VC编译方法

    SDL-1.2.14.zip解压后,再解压其中的VisualC.zip,然后用VC打开VisualC\SDL.sln。编译SDL和SDLmain两个工程。

4. 编译依赖

    DirectX SDK中的dsound.h, dinput.h几个头文件,和dxguid.lib这个库文件。最新的DirectX SDK 2009 Auguest可以从微软(http://is.gd/4Q3Mo)下载。或者只下载其中include目录和lib目录打包(http://is.gd/4Q416)。

5. 注意

    这样通过SDL.sln编译出的SDL.dll依赖msvcr90.dll,需要目的端也装了VC 2009的redistributable才行。要么就用外置manifest文件的方法发布,还没搞懂,搞懂再写。

分类: 开源软件 标签: , , ,
This work by dipplum is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 2.5 China Mainland.