确保将所有依赖项dll打包为可执行文件

时间:2016-08-18 07:20:21

标签: c++ windows visual-studio visual-studio-2013

我想如果您使用/MT代码生成 - >运行时库编译Visual-studio 2013 Win32项目,那么它将自动打包所有依赖项dll - 包括第三方dll' s - 进入可执行文件?

目前,某些用户在运行.exe时出错。它与没有第三方dll(OpenSSL)有关:

  

程序无法启动,因为您的计算机缺少LIBEAY32.dll

在Windows 10操作系统上使用我的.exe的用户发生此错误。如何确保将所有依赖项dll打包到我的.exe?

我目前在64位Windows 8.1操作系统上编译我的应用程序。 win32 visual-studio项目使用以下项目属性进行编译:

  • 字符集:Unicode字符集
  • 使用MFC:使用标准Windows库
  • 整个程序优化:使用链接时间代码生成
  • 调试信息格式:无
  • 代码生成 - >运行时库:/ MT

1 个答案:

答案 0 :(得分:0)

Nikita是对的,使用Dependency Walker并且我补充说你错过了一些关于DLL真正的知识。没有冒犯意味着,我知道dll可以是皮塔饼。 What is a DLL?

根据定义,DLL不包含在.exe中,但它在运行时加载,可以在多个应用程序之间共享。如果你想将它包含在你的.exe中,它将需要一些额外的非常重要的工作来将它们嵌入到你的exe中,在运行时解包和加载。 见this post

我建议使用安装程序,更容易处理!只需创建一个安装程序(您知道点击单击"是 - 是 - 我同意 - Ok-Done"向导安装程序),其中将包含您的.exe和所有必需的依赖项文件。作为参考,Inno setup非常棒。