Sys_LoadDll(game) failed

Call of DutyCall of Duty: United OffensiveCall of Duty 2

Sys_LoadDll(/opt/cod1/main/game.mp.i386.so) failed:
"libstdc++.so.5: cannot open shared object file"
Sys_LoadDll(game) failed dlopen()

Cause

The engine loads its gameplay logic from a separate shared object (game.mp.i386.so on Linux). The failure message usually names the real reason on the line above.

The three real causes:

  1. Missing 32-bit libraries. The message quotes the missing library — that is a libstdc++.so.5 problem, not a game problem.
  2. The module is missing. It ships inside the patch. A base install patched incorrectly can end up without it.
  3. Patch mismatch. The engine binary and game.mp.i386.so come from different patch levels.

Fix

Read the quoted reason first. If it names a library, install the i386 runtime:

sudo dpkg --add-architecture i386
sudo apt update
sudo apt install -y libc6:i386 libgcc-s1:i386 lib32stdc++6 libstdc++5:i386

If nothing is quoted, check the module exists and is readable:

ls -la /opt/cod1/main/game.mp.i386.so
ldd /opt/cod1/main/game.mp.i386.so | grep 'not found'

If the module is absent, re-apply the patch — 1.5 for CoD1, 1.3 for CoD2 — making sure it is the dedicated server package, not the client-only patch.

A healthy load looks like:

Sys_LoadDll(/opt/cod1/main/game.mp.i386.so)... ok
Sys_LoadDll(game) found vmMain at 0xef0c0888
Sys_LoadDll(game) succeeded!

Related