有没有办法将DLL编译到你的exe?

时间:2013-06-16 20:00:47

标签: visual-studio

所以我编译了一个C ++代码,它使用Visual Studio 2012中的Boost库(如果这很重要),目前正在使用Windows在不同的机器上测试可执行文件。在某些情况下,它可以正常工作,但在其他情况下,它会发出一个错误,它无法找到MSVCP110D.dll,因此无法运行。有没有其他方法可以让它运行创建一个包含DLL的安装程序?我可以以某种方式将DLL编译成我的可执行文件,以便它甚至在没有适当库的机器上运行吗?

5 个答案:

答案 0 :(得分:2)

您正在链接调试CRT。将其更改为版本1,然后您可以在安装过程中重新分发所需的DLL(使用调试版本执行此操作是不合法的)

答案 1 :(得分:2)

MSVCP110D.dll是一个运行时库。您可以静态链接到运行时库。转到Project Properties - > Configuration Properties - > C/C++ - > Code Generation并在发布模式下将Runtime Library设置为/ MT,在调试模式下将/ MTd设置为模式。或者,请确保安装程序包中包含Visual Studio 2012 redistributable

答案 2 :(得分:0)

您可以静态链接它。我不确定Microsoft Visual Studio,但使用GCC,您可以使用-static选项。

答案 3 :(得分:0)

将您的DLL代码编译为静态库(LIB文件),并将EXE与之链接。

答案 4 :(得分:0)

我知道您希望避免使用安装程序,但是您是否知道这个免费,功能强大且易于使用的安装程序:NSIS(由编写WinAmp的相同人员制作)

Here are other choices。也许你可以找到一个让它变得容易(价格合适)的东西,你可能会改变主意,不想使用它。