Quote Originally Posted by Hadron Games
@paul_nicholls
You are correct. The whole game engine is OOP on the back end and those returned integer values are actual instantiated classes. Since all classes are derived from a common base class (THGEObject) every instance can be safely destroyed using HGE_Object_Destroy unless otherwise stated. The same with the stream routines, they are polymorphic so all stream routine can be closed with HGE_Stream_Close. I was able to save on the export count by returning an instance on first use for some of the routines. If a routine does not have a _Create export then most likely one of the other routines (_Open, _Alloc, etc) will return a qualified instance on first use.

More work up front but this should allow any modern programming language that supports binding to 32bit DLLs to work safely. One would only have to code the OOP layer (if it supports OOP) in the native language. Since this OOP layer is thin, it should not get in the way of your coding style and you should be able to build on top using it as a foundation. Or, you can completely build your own OOP layer on top of the procedural API. Again, giving you a choice and complete control.

@Colin
Wonderful, glad to know. Thanks for verifying.
@Jarrod
Cool, thanks chief
BTW, I was able to compile and run the HGE lazarus examples just fine for your information
I hadn't tried the Delphi versions yet...

cheers,
Paul