Thread Windows: Perl-Modul einer DLL mit XS
(8 answers)
Opened by Gast at 2008-05-24 01:58
Hallo Forum,
ich versuche gerade unter Windows eine C-Funktion die in einer DLL abgelegt ist mittels XS von Perl aus aufzurufen. Als Compiler verwende ich den MinGW mit dmake. Bei "dmake test" bekomme ich jedoch folgende Fehlermeldung: Code: (dl
)
1 # Failed test 'use HalloDLLtest;' Mein Makefile.PL habe ich folgendermaßen ergänzt: LIBS => ['-lHalloDLLtest.a'], # e.g., '-lm' DEFINE => '-DBUILD_DLL', # e.g., '-DHAVE_SOMETHING' Die HalloDLLtest.a habe ich mir beim gcc mit der Option "--out-implib,HalloDLLtest.a" erzeugen lassen. Meine HalloDLLtest.h sieht so aus: [cpp] #ifdef BUILD_DLL /* DLL export */ #define EXPORT __declspec(dllexport) #else /* EXE import */ #define EXPORT __declspec(dllimport) #endif EXPORT int add_dll(int a, int b);[/cpp] Meine .xs so: [cpp] #include "EXTERN.h" #include "perl.h" #include "XSUB.h" #include "ppport.h" #include "HalloDLLtest.h" MODULE = HalloDLLtest PACKAGE = HalloDLLtest int add_dll(a, b); int a int b PROTOTYPE: $$ CODE: RETVAL = add_dll(a, b); OUTPUT: RETVAL [/cpp] Eine dll wird bei dmake auch im entsprechenden Verzeichnis erzeugt. Ich hoffe, dass ich mit meiner .a Datei bei LIBS richtig liege, so ganz verstanden wie das nachher eingebunden wird habe ich das auch noch nicht. Hat jemand vielleicht einen Hinweis wo der Fehler liegen könnte? Danke und Gruß Thomas |