该项目在Visual Studio的调试模式下运行正常,但是当我尝试双击生成的exe时,它表示缺少某些dll。当我在exe旁边复制缺少的dll并再次双击时,没有出现错误消息对话框,但也没有发生任何事情(该项目具有基于Qt的GUI并引用一些外部png文件)。
Visual Studio如何运行exe?我怎样才能自己运行exe?我应该为项目创建一个安装程序,使其在其他计算机上运行吗?
答案 0 :(得分:1)
您需要静态构建或提供所需的dll文件。
http://www.tapkaa.com/2013/05/what-dll-files-are-required-to-run-an-application-developed-with-visual-c/处的页面说明了如何找到丢失的dll文件。
答案 1 :(得分:0)
当进程需要按名称加载DLL(没有完整路径)时,它会检查几个不同的地方。其中一个地方可能是当前的工作目录。 (搜索路径的详细信息因历史记录和安全问题而变得复杂。您可以通过在MSDN上查找LoadLibrary和SetDllDirectory来了解详细信息。)
在Visual Studio中,如果查看项目的“属性”页面,然后单击“调试”选项卡,则可以看到从Visual Studio启动程序时将哪个目录设置为工作目录。双击图标时,我相信工作目录将是可执行文件的目录。如果它们不同,那么这可以解释为什么你能够在一个案例中找到DLL但在另一个案例中却找不到。
如果您直接调用LoadLibrary,最好的办法是始终提供库的完整路径。通常,您使用GetModuleFileName查找可执行文件的完整路径,然后将文件名部分替换为DLL的名称或从可执行文件到DLL的相对路径。
如果您未能加载隐式链接的DLL,那么您可能需要确保您的DLL与可执行文件位于同一目录中。