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