首页 > 解决方案 > 收集项目中所有 DLL 的更有效方法

问题描述

我想将一个可执行文件导出给其他人,他们可以通过点击来玩游戏,但是当我点击可执行文件时它会立即关闭。我认为它错过了一些能够运行的 DLL 文件。所以我检查了构建日志。

'Pacman.exe' (Win32): Loaded 'C:\Windows\System32\ntdll.dll'.
'Pacman.exe' (Win32): Loaded 'C:\Windows\System32\kernel32.dll'. 
'Pacman.exe' (Win32): Loaded 'C:\Windows\System32\KernelBase.dll'. 
'Pacman.exe' (Win32): Loaded 'C:\Windows\System32\user32.dll'. 
'Pacman.exe' (Win32): Loaded 'C:\Windows\System32\win32u.dll'. 
'Pacman.exe' (Win32): Loaded 'C:\Windows\System32\d3d11.dll'. 
'Pacman.exe' (Win32): Loaded 'C:\Windows\System32\gdi32.dll'. 
'Pacman.exe' (Win32): Loaded 'C:\Windows\System32\D3DCompiler_47.dll'. 
'Pacman.exe' (Win32): Loaded 'C:\Windows\System32\gdi32full.dll'. 
'Pacman.exe' (Win32): Loaded 'C:\Windows\System32\msvcrt.dll'. 
'Pacman.exe' (Win32): Loaded 'C:\Windows\System32\ucrtbase.dll'. 
'Pacman.exe' (Win32): Loaded 'C:\Windows\System32\msvcp_win.dll'. 
'Pacman.exe' (Win32): Loaded 'C:\Windows\System32\rpcrt4.dll'. 
'Pacman.exe' (Win32): Loaded 'C:\Windows\System32\ole32.dll'. 
'Pacman.exe' (Win32): Loaded 'C:\Windows\System32\dxgi.dll'. 
'Pacman.exe' (Win32): Loaded 'C:\Windows\System32\combase.dll'. 
'Pacman.exe' (Win32): Loaded 'C:\Windows\System32\cryptsp.dll'. 
'Pacman.exe' (Win32): Loaded 'C:\Windows\System32\msvcp140.dll'. 

.......等等。

只有一种方法可以手动复制上述所有文件吗?

项目链接

标签: c++windowsvisual-studio-2019directx-11directxtk

解决方案


这些文件中的绝大多数只是 Windows 操作系统的一部分。

msvcp140.dll是 Visual C++ 运行时的一部分。您可以并行部署这些(即 xcopy 样式部署)。请参阅Microsoft 文档。如果您使用 Visual C++ 构建游戏,您需要的确切文件取决于哪个版本。

  • vcruntime140.dll

  • msvcp140.dll

  • concrt140.dll(仅用于 Windows XP)

  • vccorlib140.dll(仅用于 C++/CX)

  • msvcp140_1.dll:(在 VS 2017 中添加)C++17 memory_resource

  • msvcp140_2.dll:(在 VS 2017 15.7 中添加)C++17 数学特殊函数

  • vcruntime140_1.dll :(在 VS 2019 中添加)__CxxFrameHandler4 用于 FH4(仅限 x64)

  • msvcp140_codecvt_ids.dll:(在 VS 2019 16.2 中添加)修复了char8_tchar16_tchar32_t.

HLSL 编译器取决于您的D3DCompiler_47.dll最低操作系统。Windows 8.1 和 Windows 10 已经包含它。如果您需要支持 Windows 7 SP1 或 Windows 8.0,您可以将其与您的游戏并排包含。请参阅此博客文章


推荐阅读