gpt4 book ai didi

c++ - 无法生成完整的静态链接应用程序

转载 作者:行者123 更新时间:2023-11-30 05:11:02 25 4
gpt4 key购买 nike

我连续 15 个小时都在尝试寻找一种方法,以不需要某些 DLL(我认为与 CRT 相关)的方式静态编译我的原生 C++ 游戏。

下载我的游戏的用户提示缺少几个 DLL,例如:

VCRUNTIME140.dll
api-ms-win-core-timezone-l1-1-0.dll
api-ms-win-core-timezone-l2-1-0.dll
api-ms-win-core-processthreads-l1-1-1.dll
(and the list goes on)

我当前的构建命令行是:

/MP /GS /GL /analyze- /W3 /Gy /Zc:wchar_t /Zi /Gm- /O2 /sdl
/Fd"Release\vc140.pdb" /Zc:inline /fp:precise /D "WIN32"
/D "_CRT_SECURE_NO_WARNINGS" /D "_WIN32_WINNT=0x0501" /D "BOT_PROTECTION"
/D "CLIENT" /D "FW_GRAPHICS" /D "FW_NET" /D "FW_XML"
/D "NDEBUG" /D "_MBCS" /errorReport:prompt /WX- /Zc:forScope /Gd /Oy- /Oi /MT
/Fa"Release\" /EHsc /nologo
/Fo"Release\\Win32\src\%(RelativeDir)\" /Fp"Release\otclient.pch"

有什么想法吗?

最佳答案

/MT 确实告诉编译器将 CRT 链接到您的可执行文件中。但是,如果另一个 DLL 仍然依赖于 VCRUNTIME140.DLL,那是不够的。 DLL 可以依赖于其他 DLL,甚至是循环依赖。 Windows 只是按照遇到的顺序加载它们,除非已经加载。因此,如果 TEST.EXE 依赖于 A.DLL,Windows 将加载 A.DLL。如果 A.DLL 依赖于 B.DLL,则 Windows 加载 B.DLL。如果 B.DLL 依赖于 A.DLL,则它已经加载。

接下来,api-ms-... 是新的 Windows DLL。它们实现了旧的 Kernel32.DLL 和类似的 DLL。它们不会导致对 VCRUNTIME140.DLL 的依赖。目前还不清楚您最终如何依赖这些。

然后还有您没有列出的其他 DLL。其中之一一定是导致您看到的问题的原因。

关于c++ - 无法生成完整的静态链接应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45318400/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com