Problem implementing PerlCOM in VB6 application

Posted by geneb on 2014-08-05 10:27
Forums: PDK discussion | OS: Windows XP Pro

I am writing the august and esteemed users of Perl to assist me in a troubling endeavor. I have a VB6 application that uses Perl scripting via PerlCOM. Being new to Perl, I have very little idea as to what is needed for this endeavor to succeed, but I will tell you what I have and what I have done.

The VB6 app is stalling on this line of code, giving the always lovely Error 429: ActiveX component can't create object:

Dim objPerlCOM as Object
...
Set objPerlCOM = CreateObject("PerlCOM.Script") <== Error occurs here.

The PerlCOM.dll is included in References, but when I try to register it via RegSvr32, I get the error: "LoadLibrary("c:\winnt\system32\perlcom.dll") failed. A dynamic link library (DLL) initialization routine failed."

I have installed both ActivePerl (version 5.16) and the PDK (v9.3), but I am not sure as this is the correct combination. The application currently sits on an XP box and I remote into it to work on it.

I believe that is everything I can tell you. If I have forgotten something, please let me know and I will provide it.

Thank you for listening.....if you are.

Gene B.

grahams
ActiveState Staff
Tue, 2014-08-05 14:18

...unless you have a time machine.

perlcom was abandoned years ago. What you have is debris from a PDK 4 installation, and you should delete it. No current Perls are compatible, and no current PDK releases have a new version of perlcom.

PerlCOM

The PerlCOM control has been discontinued in Perl Dev Kit 5.0, as PerlCtrl offers a more effective and flexible way to achieve the same results. PerlCOM is limited in that it only works on the machine that the PDK is installed on. It cannot be redistributed to other machines without acquiring a PDK license for those machines as well. Controls generated by PerlCtrl can be redistributed without restriction.

You can probably adapt your VB6 app to use a PerlCtrl control built with PDK 9, but as-is, it won't work.