Leser: 1
9 Einträge, 1 Seite |
1
2
3
4
5
# Failed test 'use HalloDLLtest;'
# at t/HalloDLLtest.t line 9.
# Tried to use 'HalloDLLtest'.
t/HalloDLLtest....NOK 1/1# Error: Can't load 'D:\c\hallo_dll\perl_use_dll\HalloDLLtest\blib\arch/auto/HalloDLLtest/
HalloDLLtest.dll' for module HalloDLLtest: load_file:Die angegebene Prozedur wurde nicht gefunden at C:/Perl/lib/DynaLoader.pm line 229.
Gast+2008-05-23 23:58:08--LIBS => ['-lHalloDLLtest.a'], # e.g., '-lm'
Ich hoffe, dass ich mit meiner .a Datei bei LIBS richtig liege
Gast+2008-05-24 12:20:40--Würde ich die .a in meinem Makefile.PL nicht angeben, wäre die eigentliche C-Funktion gar nicht bekannt.
(dann kommt bei dmake:
HalloDLLtest.o:HalloDLLtest.c:(.text+0x122): undefined reference to `add_dll')
QuoteEine Beschreibung wie man das unter Linux mittels einer .so-Datei macht würde mir auch weiterhelfen.
betterworld+2008-05-24 03:38:48--[...]
Aber ich frage mich, warum Du ueberhaupt eine .a-Datei brauchst, wo Du doch Dein eigentliches Ziel als das Aufrufen einer Funktion aus einer DLL-Datei beschrieben hast.
murphy+2008-05-24 16:21:04--Meine Empfehlung wäre daher, zunächst einmal die Kommandos zu überprüfen, mit denen die DLL gelinkt wurde bzw. mit objdump nachzusehen, ob die Funktion add_dll überhaupt in der DLL vorhanden ist.
1
2
3
4
5
DLL Name: HalloDLLtest.dll
vma: Hint/Ord Member-Name Bound-To
6374 0 add_dll
00006050 00000000 00000000 00000000 00000000 00000000
1
2
3
4
5
# --- MakeMaker dlsyms section:
HalloDLLtest.def: Makefile.PL
$(PERLRUN) -MExtUtils::Mksymlists \
-e "Mksymlists('NAME'=>\"HalloDLLtest\", 'DLBASE' => '$(BASEEXT)', 'DL_FUNCS' => { }, 'FUNCLIST' => [], 'IMPORTS' => { }, 'DL_VARS' => []);"
Gast+2008-05-23 23:58:08--[...]
DEFINE => '-DBUILD_DLL', # e.g., '-DHAVE_SOMETHING'
[...]
gcc -Wall -O2 -DHALLO_SHARED_LIB -fPIC -shared hallo.c -o hallo.dll -Wl,--out-implib=libhallo.a
gcc -Wall -O2 -DHALLO_SHARED_LIB test.c -o test.exe -L. -lhallo
9 Einträge, 1 Seite |