From: John L. <le...@cs...> - 2006-04-06 01:28:16
|
On Wed, April 5, 2006 8:09 am, Olly Betts said: > On 2006-04-05, John Lenz <le...@cs...> wrote: >> "You should be aware that your application will not work on some >> platforms--most notably, Windows and AIX---if you rely on a >> back-linking." >> >> From reading that, the only way to get modules working on Windows would >> be >> to factor out all the functions inside the SWIG core. > > There's an easy workaround for this: > > SWIG puts pointers to all the functions which a module is allowed to > call into a struct, and the module provides a call which accepts such a > struct which is called before anything else by SWIG. Then the module > can call back into SWIG using these function pointers. > > It requires that struct to be updated when new functions get added, > but that shouldn't be a frequent occurence. Note that if you never > delete or reorder entries you can pass sizeof(struct) to avoid > versioning issues. Well, problem is the modules use a massive amount of functions from all over the SWIG core... all the functions in DOH, and most of the functions inside Source/Swig... We are talking about probably over 1000 functions. Now, some of the functions in DOH are already used through pointers, but there still are a huge number of functions. Getting all those functions into some struct is a lot of work... and one which is balanced against the fact that loadable language modules aren't that benificial. On the other hand, I was searching around (just type back-linking into google you get a lot of hacks which say it is possible) just found this project, which supposedly allows backlinking using MinGW (which I think is what SWIG uses to compile on windows?) http://edll.sourceforge.net/ Not so sure about the license, becuase it is LGPL... maybe someone could look into using that instead? John |