我有一个很棒的项目。
我创建了一个新的独立 .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
个文件..
感谢。
答案 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相同的文件夹中,然后再次启动该应用程序。这与您的编译器/链接器/构建设置无关。