ptitSeb / Serious-Engine

A port to the OpenPandora (and working fine on plain Linux) of the open source version of a game engine developed by Croteam for the classic Serious Sam games. Status: Working (for both FE and SE).
https://pyra-handheld.com/boards/threads/serious-sam-first-encounter.77225/
GNU General Public License v2.0
75 stars 24 forks source link

undefined symbol: CGhostBusterRay_DLLClass #9

Closed PaddyMac closed 5 years ago

PaddyMac commented 5 years ago

When starting the game on Linux or FreeBSD, at the Croteam logo, I see the error message:

CUnixDynamicLoader error: /opt/ssam-tse/Bin/libEntities.so: undefined symbol: CGhostBusterRay_DLLClass

If I press enter, the Croteam logo repeats. If I press escape, it will skip the logo screen. The error appears again after starting a game, but nothing special has to be done to get past it.

ptitSeb commented 5 years ago

Strange.

What compiler version are you using?

PaddyMac commented 5 years ago

I'm currently using gcc 9.1.0, but I've experienced this same issue with earlier versions of gcc on Linux and Clang on FreeBSD.

PaddyMac commented 5 years ago

I only found one reference to this anywhere in the source code. It occurs in Sources/Entities/GhostBusterRay.h on line 19:

extern "C" DECL_DLL CDLLEntityClass CGhostBusterRay_DLLClass;

I noticed that this exists in rcgordon's fork of the code, but it is not in the official Croteam code. I'm only a novice, so I don't know what I might be able to do, but maybe that can help point us in the right direction.

ptitSeb commented 5 years ago

I'm looking at this. It's possible it's just an left-over from some old version of the engine, I'll check if I can remove the reference.

ptitSeb commented 5 years ago

So, I just pushed a commit that remove the generated .cpp/.h/_tables.h file for the GostBusterRay entitie. It's not used and it's not builded anyway. I'm still unsure why you have some access to it, because you will now see no reference to this. It's not used at all (the only line referencing GhostBusterRay.es in the CMakeList.txt is commented out).

The other strange thing is that you seem to be launching "Serious Sam: The Second Encounter" with libEntities.so, where it should be libEntitiesMP.so. Check that you do have ModEXT.txt data file (you can find it on the root of the repo) containting "MP" with your SS:TSE data.