我正在构建一个win32可执行文件。编译器是MinGW的最新版本。库依赖关系是GLUT和libpng。缺少zlib.dll
我首先在Windows 7机器上测试过,并且必须获得libpng3.dll和freeglut32.dll。但是,在XP上,我必须(另外)获取zlib1.dll。
XP机器是全新安装的虚拟机,所以我怀疑新的win7机器可能也缺乏zlib1。
我的问题是如何去找出我需要分发哪些dll?我怎么知道,先验,我的程序需要哪些动态库在特定系统上运行?我想这是安装程序的用途......我猜测安装程序所做的是通过系统查找哪些依赖性不满意,然后提供它们。所以这样,如果我要分发我的程序,我可以检查用户的机器是否已经有zlib1.dll,并且如果它已经在系统目录中找到,我将不会安装zlib1.dll。然而,我从来没有找到特别对我说的文档,“libpng需要zlib”,所以,直到我在缺乏zlib的机器上测试可执行文件时,我并不知道这种依赖关系。我怎样才能创建我的依赖列表,而无需全新安装每个操作系统的每个版本进行测试?
我的一个想法是反编译可执行文件,或者通过某种方法检查链接过程,找到所有在运行时链接的库。现在问题变成找出哪些应该已经存在,以及哪些我可以预期在分配中提供。
编辑:好吧,我看了,我下载的libpng的安装在它的bin目录中提供了zlib1.dll。所以不包括它几乎是我的错。无论如何,丹尼尔的答案是确定的。
这是完全真棒。谢谢。 – 2011-02-16 05:43:28
几乎每个涉及DLL的问题都有一个答案指向这个工具:)) – Daniel 2011-02-16 06:49:20