-
Notifications
You must be signed in to change notification settings - Fork 369
Open
Open
Copy link
Labels
area-DynamicDependenciesarea-Win32Support for Win32 packaged and non-packaged appsSupport for Win32 packaged and non-packaged appsfeature proposal
Milestone
Description
@niklasb-ms discovered that using WinAppSDK from an unpackaged app using dynamic dependencies can cause the exe to fail to launch with a "module not found" error. This appears to be caused by the exe getting a static-import record for dwritecore.dll, which isn't in the loader's paths until MddBoostrapInitialize
is called. Switching to a LoadLibrary
or a DELAYLOAD
import of the DLL works fine.
So:
- Unpackaged (like MSI) using WinAppSDK (any version)
- App calls
DWriteCoreCreateFactory
in itsWinMain
- App crashes at launch with
ERROR_MOD_NOT_FOUND
Potential solution:
When the project has <WindowsPackageType>None</WindowsPackageType>
all WinAppSDK DLLs should be delay-loaded. This can be done with by adding a /delayload:dllname
linker option, per https://docs.microsoft.com/en-us/cpp/build/reference/linker-support-for-delay-loaded-dlls?view=msvc-160
riverar
Metadata
Metadata
Assignees
Labels
area-DynamicDependenciesarea-Win32Support for Win32 packaged and non-packaged appsSupport for Win32 packaged and non-packaged appsfeature proposal