首页 > 解决方案 > 如何将 VS、C++、OpenGL 应用程序部署到第二台计算机?

问题描述

我试图简单地将 OpenGL、C++ 应用程序从一台计算机部署到另一台计算机。该应用程序是使用 Visual Studio 2017 社区编写的。第一台电脑安装了VS,第二台没有。

这些计算机分别具有 Intel Core i7-8550U CPU 和 Intel Atom x5-Z8350 CPU。两者都运行 Windows 10 家庭版。

VS 项目开始时是一个空项目,我在其中添加了所有内容。

我已将发行版、x64 应用程序 .exe 文件和项目开发所需的一个 .dll 文件复制到第二台计算机上的单个目录中。

Microsoft 的本地部署说明说“本地部署,您从 Visual Studio 安装中复制特定的 Visual C++ DLL(通常在 \Program Files (x86)\Microsoft Visual Studio version\VC\Redist\platform\library\ 中)并安装它们在与应用程序可执行文件位于同一文件夹中的目标计算机上。您可以使用这种部署方法来支持没有管理员权限的用户安装,或者支持可以从网络共享运行的应用程序。”</p>

我无法在 VS 中看到或找到任何设置来告诉我我开发并在第一台计算机上运行的应用程序正在使用哪些 .dll 文件。有一个 VS 输出窗口,其中显示了许多 .dll 文件,但这些文件位于 c:\windows\system32 中。

根据 Microsoft 说明中有关 \Program Files (x86)\Microsoft Visual Studio version\VC\Redist\platform\library\ 中 MSVC DLL 的参考,我查看了 ..\VC\Redist\MSVC\14.16.27012\x64在第一台计算机上找到这些文件夹:

在此处输入图像描述

我已将 .CRT 目录和 .MFC 目录中的 DLL 复制到第二台计算机,但无济于事。

当我尝试在第二台计算机上运行该应用程序时,它会显示消息“无法创建 GLFW 窗口”,它位于我编写的代码中,如下所示:

在此处输入图像描述

似乎必须有一种直接的方法来做到这一点。我看到了对旧的 Microsoft 应用程序(我认为)的引用,depends.exe,它提供了所需的 DLL 列表,但它不再与 Windows 系统一起部署。

标签: c++visual-studioopenglvisual-studio-2017

解决方案


您可以使用 DUMPBIN /DEPENDENTS EXENAME 来获取绑定 DLL 的列表。请注意,这仅列出了带有导入表条目的 DLL,如果您正在实例化 COM 对象,这根本无济于事。

我的猜测是您可能缺少目标系统上的 opengl 驱动程序/dll。

ed:实际上我将把它缩小到缺少驱动程序,因为如果你缺少 DLL,你会在加载时遇到错误。您能够调用该函数的事实意味着您已绑定到它,但是当它尝试调用驱动程序时您只会遇到失败。尝试调用一些良性的东西来查询驱动程序或设备信息,比如版本或字符串。如果失败,您就知道驱动程序丢失了。


推荐阅读