该项目在Visual Studio的调试模式下运行正常,但当我尝试双击生成的exe时,它显示缺少某些dll。当我将丢失的dll复制到exe旁边并再次双击时,没有出现错误消息对话框,但也没有发生任何事情(该项目具有基于Qt的GUI并引用了一些外部png文件)。
Visual Studio如何运行可执行文件?我如何运行我自己的exe?我是否应该为该项目创建一个安装程序,使其在其他计算机上运行?
发布于 2013-06-15 01:21:31
当进程需要按名称加载DLL (没有指向它的完整路径)时,它将检查几个不同的位置。其中一个位置可能是当前工作目录。(搜索路径的细节由于历史和安全问题而变得复杂。您可以在MSDN上查找LoadLibrary和SetDllDirectory来了解详细信息。)
在Visual Studio中,如果您查看项目的Properties页面,并单击Debugging选项卡,当您从Visual Studio启动程序时,您将看到哪个目录被设置为工作目录。当您双击图标时,我相信工作目录将是可执行文件的目录。如果它们不同,这就可以解释为什么在一种情况下可以找到DLL,而在另一种情况下却找不到。
如果您直接调用LoadLibrary,最好的做法是始终提供库的完整路径。通常,使用GetModuleFileName查找可执行文件的完整路径,然后将文件名部分替换为DLL的名称或从可执行文件到DLL的相对路径。
如果无法加载隐式链接的DLL,则可能需要确保DLL与可执行文件位于同一目录中。
发布于 2013-06-14 21:08:54
您需要静态生成或提供所需的dll文件。
http://www.tapkaa.com/2013/05/what-dll-files-are-required-to-run-an-application-developed-with-visual-c/上的页面告诉您如何查找丢失的dll文件。
https://stackoverflow.com/questions/17109209
复制相似问题