我有一个很棒的项目。
我创建了一个新的和独立的 .dll
项目,其中包含带有一些导出函数的原始项目(复制了原始 .h
和 .cpp
文件到新项目)。我从原始项目复制了所有 lib 依赖项和这些 lib 的路径以及其他包含文件。它的设置相同。
新程序可以编译,但问题是当我尝试运行代码时,出现错误消息:
程序无法启动,因为您的计算机缺少 xxx.dll。尝试重新安装程序以解决此问题。
xxx.lib
在 Additional dependencies
列表中,它不是第一个:
附加依赖项:aaa.lib; bbb.lib; ccc.lib; xxx.lib, zzz.lib
我猜 VS 找到了前三个 .lib
否则我会收到一些错误消息.. 那么为什么它找不到 xxx.lib
?同一文件夹中的所有 .lib
文件..
谢谢。
最佳答案
您似乎误读了错误消息。它说:
The program can't start because xxx.dll is missing from your computer. Try reinstalling the program to fix this problem.
请注意,它说缺少 xxx.dll,而不是 xxx.lib!
在 Windows 上,LIB 文件通常用作链接器在使用 DLL 时的辅助工具。 LIB 包含 DLL 提供的函数的导入 stub 。构建二进制文件时需要 LIB 文件;您不需要机器上的 LIB 文件来运行生成的二进制文件。但是,您确实需要 DLL!
这可能令人困惑的原因是,如果您要静态链接目标文件,您只需要 LIB。它包含所有代码,并且不需要 DLL。但这不是您使用的策略。链接器使用 xxx.lib 文件安排 EXE 动态链接到 xxx.dll。因此,EXE 需要 DLL 才能运行。
将 xxx.dll 复制到与您的 EXE 相同的文件夹中,然后再次启动该应用程序。这与您的编译器/链接器/build设置无关。
关于c++ - 您的计算机错误中缺少 DLL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40883664/