Looks like my prior searches didn't give the answer I was looking for.
It looks like main.cpp symbols weren't being exposed to shared libraries, so it was getting tripped up.
Compiling with g++ -rdynamic -I./lib main.cpp -o game
worked as expected.