我有一个项目A链接到项目B. B编译成.dll而A是主程序并编译成.exe
编译项目没有任何问题,但是当我运行程序时,我得到一个弹出窗口,说“此应用程序无法启动,因为找不到B.dll。重新安装应用程序可能解决问题。“
我做了几次清理,试图移动dll,但那不行。
我正在使用visual Studio 9.0 btw
答案 0 :(得分:2)
当Windows加载EXE时,它将直接或间接检查所需的DLL。在你的情况下,A.EXE将需要B.dll。当Windows确定该列表时,它将使用this procedure来定位DLL:
[1]符号链接可能导致可执行文件具有多个路径。确切地说,这是传递给CreateProcess的可执行文件的路径。
答案 1 :(得分:1)
dll需要位于路径上或与可执行文件A相同的目录中。
然后有可能dll B在某种程度上不是有效的dll
答案 2 :(得分:1)
如前所述,Dll应该与.exe位于同一目录中,或者通过PATH环境变量可用。如果它位于当前目录,Windows或System32目录中,也可以找到它。
有两个不同的项目,您可以将后期构建步骤添加到Dll项目,将Dll复制到.exe目录。将Dll end exe保存在同一解决方案中很方便。默认情况下,输出目录是$(SolutionDir)$(ConfigurationName),这意味着,解决方案中的所有.exe和.dll文件都写入同一目录。在这种情况下,dll加载问题会自动解决。