Toolchain: VS2022 (v143) is the build of record -- /FORCE:UNRESOLVED retired
The v143 linker refuses to emit an image with unresolved externals even under /FORCE, so the dead offline-tool ladders in mech3.cpp (Mech::CreateSubsystemStream / SubsystemDefaultData -- never called at runtime, resources ship prebuilt in BTL4.RES) are compiled out behind BT412_OFFLINE_TOOLS (default off). The exe links /FORCE:MULTIPLE only: a genuinely unresolved symbol is now a hard link error instead of a hidden runtime AV. No other source changes needed for v143. Verified: clean build; solo DEV.EGG runs; two-instance loopback MP via btconsole.py -- mesh forms, mission runs both sides, master + replicant tick in each world. (Phase 1 of docs/BT412-ROADMAP.md) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -50,9 +50,10 @@ CLAUDE.md knowledge-base ROUTER — identity, protocols, quick-lookup,
|
||||
|
||||
## Prerequisites
|
||||
|
||||
- **Visual Studio 2019 BuildTools** (MSVC v142, x86). The Community install on the original dev
|
||||
box was broken, hence the explicit BuildTools instance in the configure line below; adjust to
|
||||
your install.
|
||||
- **Visual Studio 2022 BuildTools** (MSVC v143, x86) — the BT412 toolchain of record (moved from
|
||||
the 2019/v142 line at the 4.12 fork; v142 still builds if you swap the generator back). The
|
||||
explicit BuildTools instance in the configure line below matches the dev box; adjust to your
|
||||
install.
|
||||
- **CMake ≥ 3.20**.
|
||||
- **Legacy DirectX SDK (June 2010)** — the engine uses `d3dx9`/`dinput`/`dxerr`, removed from the
|
||||
modern Windows SDK. Default path `C:/Program Files (x86)/Microsoft DirectX SDK (June 2010)`;
|
||||
@@ -65,16 +66,19 @@ the exe automatically at build time.
|
||||
## Build (32-bit / Win32)
|
||||
|
||||
```
|
||||
cmake -S . -B build -G "Visual Studio 16 2019" -A Win32 ^
|
||||
-DCMAKE_GENERATOR_INSTANCE="C:/Program Files (x86)/Microsoft Visual Studio/2019/BuildTools"
|
||||
cmake -S . -B build -G "Visual Studio 17 2022" -A Win32 ^
|
||||
-DCMAKE_GENERATOR_INSTANCE="C:/Program Files (x86)/Microsoft Visual Studio/2022/BuildTools"
|
||||
cmake --build build --config Debug
|
||||
```
|
||||
|
||||
Must be **Win32** — the DirectX SDK link libs are `Lib/x86`. The link uses `/FORCE`: the 1995
|
||||
headers define free functions/globals without `inline`/`extern`, so identical symbols appear in
|
||||
many translation units (~124 `LNK2005`); `/FORCE:MULTIPLE` keeps the first. `UNRESOLVED` tolerates
|
||||
a dead offline-tool factory in `mech3.cpp` that is never called at runtime. (Cleanup task: move
|
||||
those definitions to single TUs + neutralize the dead factory, then drop `/FORCE`.)
|
||||
Must be **Win32** — the DirectX SDK link libs are `Lib/x86`. The link uses `/FORCE:MULTIPLE`: the
|
||||
1995 headers define free functions/globals without `inline`/`extern`, so identical symbols appear
|
||||
in many translation units (~124 `LNK2005`); `MULTIPLE` keeps the first. `UNRESOLVED` is gone as of
|
||||
4.12 — the v143 linker refuses to emit an image with unresolved externals even under `/FORCE`, so
|
||||
the dead offline-tool factory in `mech3.cpp` is neutralized behind `BT412_OFFLINE_TOOLS` (default
|
||||
off) and a genuinely unresolved symbol is now a hard link error instead of a hidden runtime AV.
|
||||
(Remaining cleanup task: move the multiply-defined globals to single TUs, then drop `/FORCE`
|
||||
entirely.)
|
||||
|
||||
## Run
|
||||
|
||||
|
||||
Reference in New Issue
Block a user