可能重复:
How to convert a dynamic dll to static lib?C++ - 如何永久导入DLL文件?
假设我们有一个DLL文件。命名为“dllfile.dll”。 我想将它导入到我的C++项目(.exe,Dev-C++上的控制台应用程序),以便它符合DLL文件本身,然后我可以发布它,而不需要将.dll文件包含在与.exe相同的目录中文件。 有什么建议吗?
可能重复:
How to convert a dynamic dll to static lib?C++ - 如何永久导入DLL文件?
假设我们有一个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,这可能不是你想要的)。
你说如果你没有源代码,你不能静态的喜欢吗? –
有一些工具,如http://www.binary-soft.com/dll2lib/dll2lib.htm – Tibor
@Tibor:是的,并且有最终用户许可协议必须得到遵守。 – SigTerm