无需 DLL 静态链接 zlib
Posted
技术标签:
【中文标题】无需 DLL 静态链接 zlib【英文标题】:Statically linking zlib without the need of a DLL 【发布时间】:2016-04-13 17:05:17 【问题描述】:我已经下载并编译了 zlib,并将 zlibwapi.lib 静态链接到我在 Visual Studio 2015 上的 C++ 项目。 但是,如果我不使用 dll 并启动我的程序,它就会抱怨:
"The program can't start because zlibwapi.dll is missing from your computer."
虽然使用 DLL,但不会显示任何错误消息,并且程序运行正常。 有什么方法可以在不需要 zlibwapi.dll 的情况下使用我的程序?
【问题讨论】:
当我在 MinGW / CMake 中遇到此类问题时,我将-static
添加到 CMAKE_CXX_FLAGS
并关闭。
哦,我完全忘了补充说我是用Visual Studio 2015编译的,我把它加到问题里。我想你的解决方案对我不起作用,如果我错了,请纠正我。
会this 帮忙吗?
我想是的!看来您在运行时可能还需要一个 DLL,这是完全正常的。让我困惑的部分是,另一个应用程序不使用 DLL,但它静态链接 zlib。
Here's 一个不同的,可能更符合你的观点。
【参考方案1】:
我使用 MSVC 10 完成了这项工作。我为 zlib 创建了一个单独的项目并将其构建为静态库 (.lib),然后将其添加到我的主应用程序项目中。这些项目不在同一个工作区中。我确实必须为我的应用程序的 32 位和 64 位版本构建一个单独的 zlib.lib 副本,并且该应用程序本身在动态 DLL 中使用 MFC。一切链接都很好,zlib 不在 DLL 中。
【讨论】:
哦,32/64 位可能是我的问题。我去看看,谢谢!以上是关于无需 DLL 静态链接 zlib的主要内容,如果未能解决你的问题,请参考以下文章