我有一个项目A链接到一个项目B。B被编译成一个.dll,而A是主程序并被编译成一个.exe
项目的编译没有任何问题,但是当我运行程序时,我得到一个弹出窗口说“这个应用程序启动失败,因为找不到 B.dll。重新安装应用程序可能解决问题。”
我已经做了几次清理,试图移动 dll,但那行不通。
顺便说一句,我正在使用 visual Studio 9.0
最佳答案
当 Windows 加载 EXE 时,它会直接或间接地检查需要哪些 DLL。在您的情况下,A.EXE 将需要 B.dll。当 Windows 确定该列表时,它将使用 this procedure定位 DLL:
- 可执行文件存放的目录[1]
- 当前目录,由 CreateProcess() 设置
- Windows 系统目录(包含大多数 Windows DLL,例如 USER32.DLL)
- Windows 目录(主要是出于遗留原因)
- 来自 PATH 变量的目录(也是出于遗留原因)
[1] 符号链接(symbolic link)可以导致一个可执行文件有多个路径。在这里准确地说,它是传递给 CreateProcess 的可执行文件的路径。
关于c++ - 如何处理 "This application has failed to start because myproject.dll was not found."错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3237642/