可能重复:
如何将动态 dll 转换为静态库?
假设我们有一个 DLL 文件。命名为“dllfile.dll”。我想将它导入我的 C++ 项目(.exe,Dev-C++ 上的控制台应用程序),以便它符合 DLL 文件本身,然后我可以发布它,而无需将 .dll 文件包含在与我的 .exe 文件相同的目录中. 有什么建议么?
可能重复:
如何将动态 dll 转换为静态库?
假设我们有一个 DLL 文件。命名为“dllfile.dll”。我想将它导入我的 C++ 项目(.exe,Dev-C++ 上的控制台应用程序),以便它符合 DLL 文件本身,然后我可以发布它,而无需将 .dll 文件包含在与我的 .exe 文件相同的目录中. 有什么建议么?
为此,您需要一个静态库,通常不能为此使用 DLL 编译代码。
如果您有 DLL 的源代码,您应该能够将其编译为静态库并链接到该库。这将导致不依赖于该库的 DLL 文件。
我可以在不包含与我的 .exe 文件相同目录中的 .dll 文件的情况下发布它。
一般来说,你不能这样做。
为此,您需要反编译 dll 并将其转换为静态库,这将违反免费软件、专有、GPL 和 LGPL 项目的许可证。静态链接 dll 的内容可能会引入问题(CRT 混淆)。
或者您可以尝试获取库 dll 表示的静态库版本,并静态链接。对于专有项目(除非您愿意付出很多并且他们愿意出售),免费软件项目,不能用于 GPL/LGPL dll(静态链接 => 派生工作 => 您的项目是现在是 GPL/LGPL,这可能不是你想要的)。