Hallo,
ich verusche unter Windows 2000 mit ActiveState Perl 5.8.6 mit XS eine C++ Klasse einzubinden. Leider lassen sich die Header-Files von Perl nicht übersetzen. Vielleicht kann mir hier jemand helfen.
Unter
Perl and C++ hatte ich ein entsprechendes Beispiel gefunden. Für Visual C++ 6.0 habe ich Makefile.PL dann noch etwas angepasst:
WriteMakefile(
NAME => 'MyPackage',
VERSION_FROM => 'lib/MyPackage.pm', # finds $VERSION
PREREQ_PM => {}, # e.g., Module::Name => 1.1
($] >= 5.005 ? ## Add these new keywords supported since 5.005
(ABSTRACT_FROM => 'lib/MyPackage.pm', # retrieve abstract from module
AUTHOR => 'A. U. Thor <a.u.thor@a.galaxy.far.far.away>') : ()),
LIBS => [''], # e.g., '-lm'
DEFINE => '', # e.g., '-DHAVE_SOMETHING'
INC => '-I.', # e.g., '-I. -I/usr/include/other'
CCFLAGS => '-TP',
XSOPT => '-C++',
TYPEMAPS => ['perlobject.map' ],
# Un-comment this if you add C files to link with later:
# OBJECT => '$(O_FILES)', # link all the C files too
);
Die Header-Files von Perl erzeugen aber Fehler, da sie im C++-Mode nicht übersetzbar sind. Auch ein Klammern mit "extern C {}" hilft da nicht.
cl -c -I. -TP -MD -Zi -DNDEBUG -O1 -DVERSION=\"0.01\" -DXS_VERSION=\"0.01\" "-ID:\Perl\lib\CORE" MyPackage.c
MyPackage.c
D:\Perl\lib\CORE\win32.h(314) : error C2061: syntax error : identifier 'Stat_t'
D:\Perl\lib\CORE\win32.h(413) : error C2143: syntax error : missing ',' before '*'
D:\Perl\lib\CORE\win32.h(413) : error C2059: syntax error : '*'
D:\Perl\lib\CORE\perlio.h(105) : error C2143: syntax error : missing ',' before '*'
D:\Perl\lib\CORE\perlio.h(105) : error C2059: syntax error : '*'
D:\Perl\lib\CORE\perlio.h(106) : error C2143: syntax error : missing ',' before '*'
D:\Perl\lib\CORE\perlio.h(106) : error C2059: syntax error : '*'
D:\Perl\lib\CORE\perlio.h(108) : error C2143: syntax error : missing ',' before '*'
...
Kann mir jemand einen Tipp geben, was ich falsch mache?
Gruß
Thomas
Gruß
Thomas