Beefy Boxes and Bandwidth Generously Provided by pair Networks
Don't ask to ask, just ask
 
PerlMonks  

Different ways to access C DLL functions from perl

by PerlRider (Initiate)
on Jan 04, 2013 at 10:03 UTC ( #1011593=perlquestion: print w/ replies, xml ) Need Help??
PerlRider has asked for the wisdom of the Perl Monks concerning the following question:

Dear Monks, Can someone please let me know the ways to access C DLL functions through perl. I tried to use Win32::API. Since our project is build with perl 5.6.1.635 and this module is not inbuld, I am unable to use this module. Trying to upgrade the perl latest version leads to lot of perl version mismatch errors. Can someone please share the other ways to use C DLLs in perl? waiting for your valuable reply...

Comment on Different ways to access C DLL functions from perl
Re: Different ways to access C DLL functions from perl
by Anonymous Monk on Jan 04, 2013 at 10:08 UTC

    Can someone please share the other ways to use C DLLs in perl?

    Inline::C, but if you can't manage to install Win32::API, or a newer perl, then it probably won't be of much use

      Actually, Inline::C should be fine on perl-5.6.
      And I think Win32::API should also be fine - though perhaps it requires an older version. (I'm quite out of touch with how recent versions of Win32::API work on 5.6).

      Cheers,
      Rob
Re: Different ways to access C DLL functions from perl
by marto (Chancellor) on Jan 04, 2013 at 10:17 UTC

    Perl 5.6 is almost 13 years old. Consider upgrading and keeping your platforms running software which is maintained.

    Update: Fixed typo.

      Is it possible to load C DLLs using XSLoader.pm module in Perl 5.6 without upgrading to latest version of Perl? I need to access C DLL functions in perl script or module.

Re: Different ways to access C DLL functions from perl
by BrowserUk (Pope) on Jan 04, 2013 at 11:27 UTC

    Try Win32::API 0.20 from here via the PPM install instructions at the bottom of the page.

    If it works (install and/or module) great. If not, I can't help.


    With the rise and rise of 'Social' network sites: 'Computers are making people easier to use everyday'
    Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
    "Science is about questioning the status quo. Questioning authority".
    In the absence of evidence, opinion is indistinguishable from prejudice.
Re: Different ways to access C DLL functions from perl
by syphilis (Canon) on Jan 04, 2013 at 12:20 UTC
    Can someone please let me know the ways to access C DLL functions through perl

    There's 3 ways that come immediately to mind:

    1) Use Win32::API;
    2) Use Inline::C;
    3) Use XS;

    Note that 2) and 3) are essentially the same, but Inline::C is less complicated (IMO).
    However, both 2) and 3) require that you have a C compiler.
    If you have a Microsoft compiler, then you'll also need an import library (.lib) for the DLL. If you don't have the import lib, I think it could be created from the dll.
    If you use a (mingw port of) the gcc compiler, you can link directly to the dll, and don't even need an import library.
    There are other options as regards compilers, but I'm not familiar with them.

    So ... it's really just a question of how you want to approach it. I would use a MinGW port of gcc and Inline::C.
    Win32::API has simply caused me too much grief over the years, and I couldn't write an XS file by hand if my life depended on it ... but perhaps that says more about *me* than anything else.

    Which path do you want to go down ?

    Cheers,
    Rob

      Hi Rob, Can you please let me know the way to use XS module to access C DLLs into perl. I am quite new to this module usage. If any prerequisites to create DLL or to access DLL functions needed please share. If possible can you please explain with simple example? :-( Waiting for your valuable reply...

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: perlquestion [id://1011593]
Approved by Corion
Front-paged by davido
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others having an uproarious good time at the Monastery: (9)
As of 2014-07-31 15:21 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    My favorite superfluous repetitious redundant duplicative phrase is:









    Results (249 votes), past polls