如何通过命令提示符运行 DirectX 游戏
Posted
技术标签:
【中文标题】如何通过命令提示符运行 DirectX 游戏【英文标题】:How to run a DirectX Game through Command Prompt 【发布时间】:2020-06-19 13:25:53 【问题描述】:我有一个用 C++ 编写的 DirectX 程序。我已经通过 Visual Studio 编译了它,但我想通过命令提示符运行该程序。为了确定,我尝试从命令提示符运行Sample Direct3D Game,但它也不起作用。当我从 Visual Studio 19 或 Visual Studio 17 构建此游戏时,它运行良好,但我无法从命令提示符运行它。每次我这样做时,都会弹出一个窗口,其中包含以下消息。
代码执行无法继续,因为找不到
MSVCP140D_APP.dll
。重新安装程序可能会解决此问题。
关于vccorlib140d_app.Dll
、CONCRT140D_APP.dll
和VCRUNTIME140D_APP.dll
显示相同的消息。但是,通过 Visual Studio 运行相同的程序时,我没有遇到这样的问题。我已经尝试了几乎所有我能找到的关于这个问题的方法,但我无法解决它。我尝试运行的.exe
文件位于路径中:..Direct3D_game_sample\cpp\x64\Debug\Simple3DGameDX
我还尝试运行用 C++ 编写的simple OpenCV program 来读取和显示示例视频文件,但也无法这样做。它可以通过 Visual Studio 完美运行,但不能通过命令提示符运行。 OpenCV 程序返回以下错误。
warning: Error opening file (/build/opencv/modules/videoio/src/cap_ffmpeg_impl.hpp:940)
warning: vtest.avi (/build/opencv/modules/videoio/src/cap_ffmpeg_impl.hpp:941)
OpenCV(3.4.9) Error: Bad argument (CAP_IMAGES: cannot find starting number (in the name of file): vtest.avi) in cv::icvExtractPattern, file C:\build\3_4_winpack-build-win64-vc15\opencv\modules\videoio\src\cap_images.cpp, line 246
[ERROR:0] VIDEOIO(cvCreateFileCapture_Images(filename.c_str())): raised OpenCV exception:
OpenCV(3.4.9) C:\build\3_4_winpack-build-win64-vc15\opencv\modules\videoio\src\cap_images.cpp:246: error: (-5:Bad argument) CAP_IMAGES:cannot find starting number (in the name of file): vtest.avi in function 'cv::icvExtractPattern'
PS:我的机器上运行的是 Windows 10,而示例 DirectX 游戏应用程序使用的是 DirectX 11。
提前致谢
【问题讨论】:
【参考方案1】:由于您的程序使用 CRT 的 MSVCP140D_APP.dll
版本,这意味着您构建了通用 Windows 平台应用程序(即 UWP app)。您不能从命令行运行像 Win32 应用程序这样的应用程序并让它工作。 Windows-universal-samples GitHub 上的所有示例都是 UWP 应用。
您可以使用 Powershell 命令安装和启动从 Visual Studio 构建的 appx 包。见Microsoft Docs。
如果您想要的是 Win32 桌面应用程序,那么您需要构建一个不同的程序。有关“UWP”模板样式的 Win32 VS 模板,请参阅 directx-vs-templates。
【讨论】:
以上是关于如何通过命令提示符运行 DirectX 游戏的主要内容,如果未能解决你的问题,请参考以下文章