Question about Versions and Plugins.

Discussion of Inner Space

Moderators: Lavish Software Team, Moderators

Post Reply
don'tdoit
Non-Subscriber
Posts: 29
Joined: Thu Jul 08, 2004 7:43 pm

Question about Versions and Plugins.

Post by don'tdoit » Wed Jan 12, 2005 10:48 am

I was wondering if you would explain the relationship of IS itself, ISXDK, and plugins (yours or 3rd party) and how different versions of IS, ISXDK will affect the plugins.

For example, your ISXGenHack plugin (the dll itself) broke when upgrading IS from .58 to .59. But at the same time ISXDK was updated. The question is, if I recompiled ISXGenHack after upgrading IS to .59 with the old version of ISXDK would it work? Or do new versions of IS require all plugins to be built with the latest ISXDK? Also, basically, are we going to need to recompile our plugins every time a new ISXDK (or even IS) version is released?

Thanks for your time!

Lax
Owner
Posts: 6634
Joined: Fri Jun 18, 2004 6:08 pm

Post by Lax » Wed Jan 12, 2005 3:43 pm

Extensions are ONLY dependent on the version of ISXDK that Inner Space was compiled with.

ISXDK.h

Code: Select all

#define ISXDK_VERSION 0x0004
ISXInterface.h

Code: Select all

	virtual unsigned long GetVersion() {return ISXDK_VERSION;}
Both Inner Space and plugins are compiled with ISXDK. When an extension is loaded, IS calls the GetVersion function that every extension has. If the ISXDK_VERSION does not match the one compiled into the IS, the plugin does not attempt to get loaded.

ISXDK versions will only be changed when either the ISXInterface (Inner Space's interface for an extension) or ISInterface (extension's interface for Inner Space) change. The reason for this is simple... if the extension tries to use a different version of IS, or vice versa, it will probably end up crashing.

So the answer is, compiling with the old ISXDK wont work, you must compile with the current ISXDK. Extensions need to be recompiled when a new ISXDK version is released, but not necessarily when a new version of Inner Space is released. Once the ISXDK is more complete, it will be a rare occurrence that something is changed that requires a version change. Note that ISXDK version 3 was compatible from something like IS 0.6 all the way to 0.59.

Oddly, it took more than a week for anyone to mention that ISXGenHack couldn't be loaded ;) Someone mentioned it to me privately a couple days ago, and I updated the zip. I'll be adding a console message when a plugin's version is mismatched so it's easier to see why they wont load.

don'tdoit
Non-Subscriber
Posts: 29
Joined: Thu Jul 08, 2004 7:43 pm

Post by don'tdoit » Thu Jan 13, 2005 5:18 pm

I didn't mention it because I was trying to figger out how to recompile it on my own from scratch, since you didn't provide a proj or sln. NBD, just a learning thing. Plus I'm still playing the game for fun more than taking it apart, so while it was missed, it wasn't that critical.

thanks for the answer, it's perfectly clear now.


btw, I had an odd dream last night that you starred in. You were working for my company on the Unix team and I was on the Windows team (same team, different people have different focuses). You were trying to train me and showing off your super powers by jumping thru holes in the ceiling and expecting me to follow. When I had to climb up instead of fly up, you mocked me, heheh.

Lax
Owner
Posts: 6634
Joined: Fri Jun 18, 2004 6:08 pm

Post by Lax » Thu Jan 13, 2005 5:31 pm

rofl :lol:

don'tdoit
Non-Subscriber
Posts: 29
Joined: Thu Jul 08, 2004 7:43 pm

Post by don'tdoit » Thu Jan 13, 2005 6:53 pm

Well, fyi, I got it working. Wasn't too hard. But similar to the errors I was getting with the other module (on ISMods), I'm getting these errors even though it compiles and loads successfully:

Code: Select all

------ Rebuild All started: Project: ISXGenHack, Configuration: Release Win32 ------

Deleting intermediate files and output files for project 'ISXGenHack', configuration 'Release|Win32'.
Compiling...
ISXGenHack.cpp
ISXGenHack.cpp(113) : warning C4312: 'type cast' : conversion from 'unsigned long' to 'void *' of greater size
ISXGenHack.cpp(119) : warning C4312: 'type cast' : conversion from 'unsigned long' to 'unsigned char *' of greater size
ISXGenHack.cpp(168) : warning C4312: 'type cast' : conversion from 'unsigned long' to 'void *' of greater size
ISXGenHack.cpp(175) : warning C4312: 'type cast' : conversion from 'unsigned long' to 'void *' of greater size
ISXGenHack.cpp(177) : warning C4312: 'type cast' : conversion from 'unsigned long' to 'unsigned char *' of greater size
ISXGenHack.cpp(177) : warning C4312: 'type cast' : conversion from 'unsigned long' to 'unsigned char *' of greater size
ISXGenHack.cpp(184) : warning C4312: 'type cast' : conversion from 'unsigned long' to 'void *' of greater size
ISXGenHack.cpp(185) : warning C4312: 'type cast' : conversion from 'unsigned long' to 'void *' of greater size
ISPtrType.cpp
Generating Code...
Linking...
   Creating library Release/ISXGenHack.lib and object Release/ISXGenHack.exp
ISXDK.lib(ISXDK.obj) : warning LNK4204: 'd:\wowgame\ISXGenHack\Release\vc70.pdb' is missing debugging information for referencing module; linking object as if no debug info

Build log was saved at "file://d:\wowgame\ISXGenHack\Release\BuildLog.htm"
ISXGenHack - 0 error(s), 9 warning(s)


---------------------- Done ----------------------

    Rebuild All: 1 succeeded, 0 failed, 0 skipped
Any suggestions?

Lax
Owner
Posts: 6634
Joined: Fri Jun 18, 2004 6:08 pm

Post by Lax » Thu Jan 13, 2005 10:45 pm

Turn off 64-bit warnings. Project properties -> C++ -> General -> Detect 64-bit portability issues

Post Reply