Beefy Boxes and Bandwidth Generously Provided by pair Networks
Welcome to the Monastery
 
PerlMonks  

How Make Inline::C autowrap do?

by xiaoyafeng (Deacon)
on Jul 05, 2019 at 02:42 UTC ( [id://11102429]=perlquestion: print w/replies, xml ) Need Help??

xiaoyafeng has asked for the wisdom of the Perl Monks concerning the following question:

When I played with Inline C, I'm used to manipulating perl stack to map perl variables to C manually. This way is okay for the situation of when functions is not so many, but when functions is more than 20, it really annoying.

So I'd like to try Inline::C option, autowrap. below is my code

use strict; use warnings; use Inline C => Config => LIBS => '-lkernel32 -lole32 -luser32', enab +le =>"autowrap", BUILD_NOISY => 1, CLEAN_AFTER_BUILD => 0; use Inline C => << 'CODE'; HANDLE WINAPI CreateFile( LPCTSTR lpFileName, DWORD dwDesiredAccess, DWORD dwShareMode, LPSECURITY_ATTRIBUTES lpSecurityAttributes, DWORD dwCreationDisposition, DWORD dwFlagsAndAttributes, HANDLE hTemplateFile ); BOOL WINAPI CloseHandle( HANDLE hObject ); CODE
Since I don't set typemap yet, I thought above code can't run successfully. But I'm wrong, Inline finished successfully with some warnings:
.... abc_pl_960a.xs:14:13: warning: 'CloseHandle' redeclared without dllimp +ort attribute: previous dllimport ignored [-Wattri butes] BOOL WINAPI CloseHandle(
It seems autowrap doesn't work? And I found there are no any XSUB declarations in the xs file which Inline generated in build directory:
#include "EXTERN.h" #include "perl.h" #include "XSUB.h" #include "INLINE.h" HANDLE WINAPI CreateFile( LPCTSTR lpFileName, DWORD dwDesiredAccess, DWORD dwShareMode, LPSECURITY_ATTRIBUTES lpSecurityAttributes, DWORD dwCreationDisposition, DWORD dwFlagsAndAttributes, HANDLE hTemplateFile ); BOOL WINAPI CloseHandle( HANDLE hObject ); MODULE = abc_pl_5f9d PACKAGE = main PROTOTYPES: DISABLE
Apparently this xs won't do anything... Well, Could monks give me any clues? TIA.




I am trying to improve my English skills, if you see a mistake please feel free to reply or /msg me a correction

Replies are listed 'Best First'.
Re: How Make Inline::C autowrap do?
by xiaoyafeng (Deacon) on Jul 05, 2019 at 04:28 UTC
    Besides, I found C-bind modules on windows are mostly use win32::API , 5years ago,maybe it's right,since windows lacked a builtin compiler.but now,most of perl user on windows are using strawberry perl, with builtin compiler. Why p5porter wouldn't provide a standard typemap file for windows XS modules authors to encourage win32 XS module?




    I am trying to improve my English skills, if you see a mistake please feel free to reply or /msg me a correction

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: perlquestion [id://11102429]
Approved by kcott
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others drinking their drinks and smoking their pipes about the Monastery: (5)
As of 2024-04-24 08:28 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found