您的计算机错误中缺少DLL

时间:2016-11-30 08:37:19

标签: c++ visual-studio visual-studio-2015

我有一个很棒的项目。

我创建了一个新的独立 .dll项目,其中包含带有一些导出函数的原始项目(将原始.h.cpp文件复制到新项目中项目)。我从原始项目复制了所有lib依赖项和路径到那些库和其他包含文件。它的设置相同。

新程序编译但问题是,当我尝试运行代码时,我得到了错误消息:

The program can't start because xxx.dll is missing from your computer. Try reinstalling the program to fix this problem.

xxx.lib列在Additional dependencies列表中,而不是第一个:

Additional Dependencies: aaa.lib; bbb.lib; ccc.lib; xxx.lib, zzz.lib

我想VS发现了前三个.lib否则我会收到一些错误消息..那么为什么它找不到xxx.lib?同一文件夹中的所有.lib个文件..

感谢。

1 个答案:

答案 0 :(得分:5)

您似乎误读了错误消息。它说:

  

程序无法启动,因为您的计算机缺少xxx.dll。尝试重新安装该程序以解决此问题。

请注意,它表示缺少xxx。 dll ,而不是xxx。 lib

在Windows上,使用DLL时,LIB文件通常用作链接器的辅助工具。 LIB包含DLL提供的函数的导入存根。构建二进制文件时需要LIB文件;您不需要计算机上的LIB文件来运行生成的二进制文件。但是,你需要DLL!

这可能令人困惑的原因是,如果要静态链接目标文件,则只需要LIB。它包含所有代码,并且不需要DLL。但这不是您正在使用的策略。链接器使用xxx.lib文件来安排EXE动态链接到xxx.dll。因此,EXE需要存在DLL才能运行它。

将xxx.dll复制到与EXE相同的文件夹中,然后再次启动该应用程序。这与您的编译器/链接器/构建设置无关。