Do you have a question? Post it now! No Registration Necessary. Now with pictures!
- Posted on
- Question about creating modules
- Mr Cheeky Monkey
May 27, 2006, 8:50 pm
rate this thread
I'm new to perl and need a little help. I'm using ActiveState Perl under
windows. I've tried creating a module from a C++ source using swig and the
methods outlined in both the perl documentation and the swig documentation.
I have VC++ installed and making the dll files works successfully. However
when I try to load the module the perl interpreter seems to loop forever.
The problem seems to occur at the bootstrap stage. Unfortunately I don't
know enough to make a good guess as too what's going on.
I'll try to give a little background as to what I'm trying to achieve. I
have a DLL that I want access from perl. The glue that I need between perl
and the DLL is really just a class definition with a list of pure functions
(some using VARIANT's) that correspond to a virtual table as setup by the
DLL I want to call. The module I'm trying to create only contains 2
functions one to create an instance of the class object and one to destroy
it. SWIG seemed to be what I needed but having produced the necessary file
nd done what I can. I seem to be stuck.
I'm using version 5.8.8 of perl and I have stripped out everything in my C++
code, recompiled and made the library and still it wont load.
Can anybody help?
Re: Question about creating modules
Which version of VC++ ? With ActiveState perl you really should be using 6.0
(as that's what was used to build perl), though you'll *generally* get good
milage from other (later) VC++ versions. I don't know if/how such a mismatch
would impact upon swig.
In fact, I know stuff-all about swig - so, if you're committed to using
swig, I can't be of much use :-)
However, if you're simply trying to access a dll, there are a number of
You could use Inline::C (or perhaps in this case Inline::CPP would be more
Or you could write your own extension (module) with XS - which is pretty
much what Inline::C/Inline::CPP do, though they do it using an automated
process. There's a good example of accessing a dll in the Inline::C cookbook
(see the section "Just Desserts" in perldoc Inline::C-Cookbook).
Another alternative is to use Win32::API - for which no compiler is needed,
and which is a fairly popular hack (though I personally prefer to avoid it).
Make sure you're using build 817 (or later):
perl -e "print $ActivePerl::VERSION"
Build 816 (which is a 5.8.8 build) is a bad build and should be avoided