【问题标题】:DLL is missing from your computer error您的计算机错误中缺少 DLL
【发布时间】:2016-11-30 08:37:19
【问题描述】:

我有一个效果很好的项目。

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

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

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

xxx.libAdditional dependencies 列表中,但不是第一个:

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

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

谢谢。

【问题讨论】:

  • 如果您通过 VS 运行可执行文件,那么您需要将 DLL 放置在相对于您的项目的正确路径(或根据您要放置的位置在项目设置中更改此路径DLL)。如果您直接运行可执行文件(即不通过 VS),那么您只需将 DLL 放在可执行文件旁边的同一路径上。
  • 嗨,为什么它不抱怨前三个库?
  • 它说“您的计算机中缺少 xxx.dll”,不是吗?

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


【解决方案1】:

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

程序无法启动,因为您的计算机中缺少 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 相同的文件夹中,然后再次启动该应用程序。这与您的编译器/链接器/构建设置无关。

【讨论】:

  • 嗨,我没有复制 lib 文件(它非常混乱..),我尝试将 dll 文件的路径放在 working directoryEnviroment 的 lib 路径中,但我仍然明白错误.. 一些网站说Enviroment 应该指向dll,其中一些指向lib。我有点困惑,我应该如何配置?在这两种情况下我仍然得到这个错误.. :\
猜你喜欢
  • 2017-11-09
  • 2014-04-17
  • 1970-01-01
  • 1970-01-01
  • 2012-11-05
  • 1970-01-01
  • 2015-05-28
  • 2014-02-19
  • 1970-01-01
相关资源
最近更新 更多