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