HomeWildfire Games

Removes manual unload of delay-loaded DLLs on Windows.

Description

Removes manual unload of delay-loaded DLLs on Windows.

Differential Revision: https://code.wildfiregames.com/D5056

Event Timeline

Stan added a subscriber: Stan.EditedJul 3 2023, 4:47 PM

This seems to have broken the Windows CI.

On a clean workspace with --jenkins-tests --large-address-aware and building the game, msbuilds fail to link the test project in both debug and release.

libvorbisfile.lib(libvorbisfile.dll) : error LNK2001: unresolved external symbol ___delayLoadHelper2@8 [C:\Dev\Perso\0ad-svn\build\workspaces\vs2017\test.vcxproj]
nvtt.lib(nvtt.dll) : error LNK2001: unresolved external symbol ___delayLoadHelper2@8 [C:\Dev\Perso\0ad-svn\build\workspaces\vs2017\test.vcxproj]
miniupnpc.lib(miniupnpc.dll) : error LNK2001: unresolved external symbol ___delayLoadHelper2@8 [C:\Dev\Perso\0ad-svn\build\workspaces\vs2017\test.vcxproj]
enet.lib(enet.dll) : error LNK2001: unresolved external symbol ___delayLoadHelper2@8 [C:\Dev\Perso\0ad-svn\build\workspaces\vs2017\test.vcxproj]
libsodium.lib(libsodium.dll) : error LNK2001: unresolved external symbol ___delayLoadHelper2@8 [C:\Dev\Perso\0ad-svn\build\workspaces\vs2017\test.vcxproj]
libpng16.lib(libpng16.dll) : error LNK2001: unresolved external symbol ___delayLoadHelper2@8 [C:\Dev\Perso\0ad-svn\build\workspaces\vs2017\test.vcxproj]
libcurl.lib(libcurl.dll) : error LNK2001: unresolved external symbol ___delayLoadHelper2@8 [C:\Dev\Perso\0ad-svn\build\workspaces\vs2017\test.vcxproj]
..\..\..\binaries\system\test.exe : fatal error LNK1120: 1 unresolved externals [C:\Dev\Perso\0ad-svn\build\workspaces\vs2017\test.vcxproj]
libvorbisfiled.lib(libvorbisfiled.dll) : error LNK2001: unresolved external symbol ___delayLoadHelper2@8 [C:\Dev\Perso\0ad-svn\build\workspaces\vs2017\test.vcxproj]
nvtt.lib(nvtt.dll) : error LNK2001: unresolved external symbol ___delayLoadHelper2@8 [C:\Dev\Perso\0ad-svn\build\workspaces\vs2017\test.vcxproj]
miniupnpcd.lib(miniupnpcd.dll) : error LNK2001: unresolved external symbol ___delayLoadHelper2@8 [C:\Dev\Perso\0ad-svn\build\workspaces\vs2017\test.vcxproj]
enetd.lib(enetd.dll) : error LNK2001: unresolved external symbol ___delayLoadHelper2@8 [C:\Dev\Perso\0ad-svn\build\workspaces\vs2017\test.vcxproj]
libsodiumd.lib(libsodiumd.dll) : error LNK2001: unresolved external symbol ___delayLoadHelper2@8 [C:\Dev\Perso\0ad-svn\build\workspaces\vs2017\test.vcxproj]
libpng16d.lib(libpng16d.dll) : error LNK2001: unresolved external symbol ___delayLoadHelper2@8 [C:\Dev\Perso\0ad-svn\build\workspaces\vs2017\test.vcxproj]
libcurld.lib(libcurld.dll) : error LNK2001: unresolved external symbol ___delayLoadHelper2@8 [C:\Dev\Perso\0ad-svn\build\workspaces\vs2017\test.vcxproj]
..\..\..\binaries\system\test_dbg.exe : fatal error LNK1120: 1 unresolved externals [C:\Dev\Perso\0ad-svn\build\workspaces\vs2017\test.vcxproj]

The Differential CI uses --atlas --build-shared-glooxwrapper --jenkins-tests which might have a different effect (When rebuilding completely with forced cleaning it seems it worked (last autobuild) then it kept failing and we don't want full rebuilds all the time, because it's a waste of resources and it clutters SVN)

Here is the MSBUILD command

MSBuild.exe pyrogenesis.sln /nologo /p:XPDeprecationWarning=false /m:2 /p:PlatformToolset=v141_xp /t:pyrogenesis /t:test /p:Configuration=Release

Being on a break I don't really have time to investigate (hence why I didn't raise a concern), So I hope it helps

Build script


Full output

In rP27733#60817, @Stan wrote:

This seems to have broken the Windows CI. >

Aha, it seems because of that:

	-- TODO: should fix the duplication between this OS-specific linking
	-- code, and the similar version in setup_main_exe

Refs rP5149 and rP820, rP1453, rP3955, rP3960.

Being on a break I don't really have time to investigate (hence why I didn't raise a concern), So I hope it helps
Build script


Full output

Thanks. Made a patch: D5070