in reply to Re: Calls to win32 hanging in cgi not in command line
in thread Calls to win32 hanging in cgi not in command line

Oh my - I feel honored to have your response! Here is a sample of a subroutine that calls the api.pm and is not coming back (the database name is a passed through as a "topic", and to reiterate, this works in the command line):
my $OpenTopic = new Win32::API ("pmdbf32", "OpenTopic", [P, P], N); sub open { my $self = shift; my $topic = shift || "-NA-"; # Topic Name provided? my ($lpTopic, $Topic, $return, $handle); # Already Open? return (-1) if $self->opened(@_); # If no topic is passed, but one was defined previously # then assign $topic that value $topic = $self->{TOPIC} if ($topic eq "-NA-") and (defined($self-> +{TOPIC})); # Return if empty Topic name return (-1) if ($topic eq "-NA-") and (! defined($self->{TOPIC})); # Allocate/Format the data $lpTopic = pack("L", 0); $Topic = pack("a16",$topic); #This is the line that is failing ***** $return = $OpenTopic->Call($Topic, $lpTopic); # Opened Topic OK? if ($return == 0) { ($self->{HANDLE}) = unpack("L", $lpTopic); $self->{TOPIC} = $topic; } else { return (-1); } return $return; }
Does this provide any insight? Thank you so much!

Replies are listed 'Best First'.
Re^3: Calls to win32 hanging in cgi not in command line
by bulk88 (Priest) on Aug 10, 2013 at 21:01 UTC
    Sorry I'm replying so late,
    my $OpenTopic = new Win32::API ("pmdbf32", "OpenTopic", [P, P], N);
    That is wrong, bare letters aren't letters but subs to run. Put single quotes around the parameter letter codes. And add a ".dll" to dll file name. You dont have to, it makes code easier to read.

    are you running on 64 bit or 32 bit windows? What the the C prototype of that OpenTopic function?