c++ - 如何将 VS、C++、OpenGL 应用程序部署到第二台计算机?

标签 c++ visual-studio opengl visual-studio-2017

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

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

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

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

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

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

根据 Microsoft 说明中关于\Program Files (x86)\Microsoft Visual Studio version\VC\Redist\platform\library\中 MSVC DLL 的引用,我查看了 ..\VC\Redist\MSVC\14.16。 27012\x64 在第一台电脑上找到了这些文件夹:

enter image description here

我已经将.CRT 目录和.MFC 目录中的DLL 复制到第二台计算机上,但没有用。

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

enter image description here

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

最佳答案

缺少 DLL 或 RTL

导致崩溃甚至没有错误,但只是立即关闭您的应用程序(这是缺少或不匹配的 MSVCPP RTL 正在做或在某些时候正在做的事情)。

由于 RTL 库一直在变化(IIRC 一年一次),已经有很多版本,所以祝你在新操作系统计算机上使用 MSVCPP 应用程序好运。为了使用某些应用程序,您通常需要找出它需要哪个版本的 RTL,而他们通常不会报告这些版本,因此您最终会安装所有这些应用程序,您会亲 body 验...

有一种解决这个问题的方法,就是让你的编译器/链接器将它需要的所有东西直接链接到 exe 文件中,而不是使用 RTL DLL。但是我没有在 MSVCPP 中编写代码,据我所知,MS 从他们的环境中删除了这个选项(我使用的其他编译器仍然有它)

您的错误消息表明您的应用程序正常运行并且没有遗漏任何内容。

问题出在 GL 方面。 Windows 10 通常会强制使用错误的驱动程序(不仅仅是 gfx 卡)。 goto 案例正在强制执行(很可能是故意的)有缺陷的 MS 驱动程序(其中 GL 存在缺陷并且 DX 或多或少起作用)而不是供应商提供的。要解决此问题(检查驱动程序制造商,如果不是,则应该是什么)从您的 gfx 供应商站点下载并安装正确的驱动程序不要为 gfx 卡使用 Windows 驱动程序服务!!!

关于c++ - 如何将 VS、C++、OpenGL 应用程序部署到第二台计算机?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58243543/

相关文章:

c# - 我可以将 NUnit 3 测试添加到 Visual Studio 2015 负载测试吗?

java - 计算地形网格上的法线

opengl - 如何有效地在openGL中渲染大量对象?

c++ - 如何中断 TCP/IP 服务器中的 accept()?

c++ - 在类中初始化静态指针

visual-studio - 有什么方法可以在NVIDIA图形卡上的Visual Studio中运行程序调试?

c++ - OpenGL 程序适用于 AMD 但不适用于 NVIDIA

c++ - 使用移位位的问题(检查二进制数是否是回文)

c++ - 重构为模板

.net - 系统.Data.SQLite.SQLiteException : Database is locked?