Problem using more than 1 module in Windows (XS) - please help

Discussion in 'Perl Misc' started by jatshergill, Sep 19, 2006.

  1. jatshergill

    jatshergill Guest

    Hi all
    I have a problem that I am running into while using Perl XS to build
    an interface to my C++ library. This is on a windows machine with perl
    5.6.1. I was able to use PerlXS to expose out different 'c++
    classes' that my API supports. I wrote the .XS files for each of
    these objects and now I am able to make a simple test.pl file and use
    these objects from Perl. The problem comes when I try to use more than
    1 object (module) in a single .pl file. Here would an example

    ========== working example perl script ================

    use lib "C:/Documents and Settings/myusername/Desktop/perl
    experiment/api";
    use MyDataReader;
    my $dr = new MyDataReader("hsd_demo_pre");
    $dr->execQuery("select * from bug");
    print "fields: " . $dr->getFieldCount() . "\n";


    ================== perl script giving problem =============
    use lib "C:/Documents and Settings/myusername/Desktop/perl
    experiment/api";
    use MyDataReader;

    use MyAdmin; # Adding this line gives problems


    my $dr = new MyDataReader("hsd_demo_pre");
    $dr->execQuery("select * from bug");
    print "fields: " . $dr->getFieldCount() . "\n";


    ========= Error Message ==================

    C:\Documents and Settings\myusername\Desktop\perl experiment\api>perl
    test.pl
    Can't load 'C:\Documents and Settings\ myusername \Desktop\perl
    experiment\api/5.6.1
    /MyAdmin.dll' for module MyAdmin: load_file:Attempt to access invalid
    address at C
    :/Perl/lib/DynaLoader.pm line 206.
    Compilation failed in require at test.pl line 11.
    BEGIN failed--compilation aborted at test.pl line 11.


    So the problem shows up when I use more than one 'use' statements
    in a perl script. Its important to note here that I can use the
    'MyAdmin' module by itself just fine. So its not aproblem with that
    module. The problem is only when I try to use more than 1 module in a
    single perl script.

    ==================== Makefile.PL ===================
    use ExtUtils::MakeMaker;
    $CC = 'cl';
    # See lib/ExtUtils/MakeMaker.pm for details of how to influence
    # the contents of the Makefile that is written.
    WriteMakefile( 'NAME' => 'MyDataReader',
    'VERSION' => '0.10',
    'DEFINE' => '-TP -EHsc', # e.g., '-DHAVE_SOMETHING'
    'CC' => $CC,
    'LDDLFLAGS' => '-nologo -libpath:"C:\Perl\lib\CORE"
    -machine:x86',
    'LIBC' => 'msvcrtd.lib',
    'LDLOADLIBS' => 'oldnames.lib kernel32.lib user32.lib gdi32.lib
    winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib
    oleaut32.lib netapi32.lib uuid.lib wsock32.lib mpr.lib winmm.lib
    version.lib odbc32.lib odbccp32.lib msvcrtd.lib',
    'CCFLAGS' => '-nologo -O1 -MDd -DNDEBUG -DWIN32 -D_CONSOLE
    -DNO_STRICT -DHAVE_DES_FCRYPT -DPERL_IMPLICIT_CONTEXT
    -DPERL_IMPLICIT_SYS -DPERL_MSVCRT_READFIX',
    'LD' => '$(CC)',
    'XSOPT' => '-C++',
    'OPTIMIZE' => '-O1 -MDd -DNDEBUG',
    'PERM_RW' => '664',
    'PERM_RWX' => '775',
    'TYPEMAPS' => ['perlobject.map'] ,
    'INC' => "-Iinclude",
    'MYEXTLIB' => 'lib\myexternalapi.lib'
    );

    ========== end =========
     
    jatshergill, Sep 19, 2006
    #1
    1. Advertisements

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments (here). After that, you can post your question and our members will help you out.