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
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: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
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:.... abc_pl_960a.xs:14:13: warning: 'CloseHandle' redeclared without dllimp +ort attribute: previous dllimport ignored [-Wattri butes] BOOL WINAPI CloseHandle(
Apparently this xs won't do anything... Well, Could monks give me any clues? TIA.#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
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 | |
by beech (Parson) on Jul 06, 2019 at 07:29 UTC |