The injected coop_hook.dll links the dynamic CRT, so it failed to load into games on machines without the matching VC++ redistributable -- a real field failure of the core feature. It was deferred because SafetyHook + Zydis (linked into the DLL) default to /MD, so a per-target /MT would mismatch. Set CMAKE_MSVC_RUNTIME_LIBRARY to MultiThreaded[Debug] project-wide (CMP0091 NEW, available at our 3.21 minimum). Every target -- the DLL, the vendored deps, the host, tools, and tests, on both x64 and the x86 sub-build -- now shares one static CRT, so there's no mismatch and the whole tool ships redist-free. Verified: x64 + x86 full builds are clean; dumpbin shows coop_hook.dll and coop_hook_x86.dll import only system DLLs (USER32/ole32/d3d11/KERNEL32) -- no VCRUNTIME/MSVCP -- and the /MT test binaries run. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
8.5 KiB
8.5 KiB