|
Das deutsche QBasic- und FreeBASIC-Forum Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Uwe Wagner
Anmeldungsdatum: 17.02.2010 Beiträge: 2
|
Verfasst am: 17.02.2010, 12:59 Titel: FreeBasic & Fortran.DLL |
|
|
Hallo zusammen,
im Forum und in den Hilfetexten zu FB gibt es viele gute Hinweise, wie man eine DLL in FreeBasic erzeugt und einbindet.
Ich habe aber nicht gefunden - oder verstanden? - wie man eine DLL einbindet, die in einer anderen Sprach geschrieben ist. Ich habe eine DLL, die in Open Watcom Fortran77 erzeugt wurde. Zu dieser DLL möchte ich eine Oberfläche in FB schreiben.
Die ersten Zeilen des Programms lauten:
DIM CallParam AS STRING * 64
DIM RetResult1 AS STRING * 512
DECLARE SUB xfMainInit STDCALL LIB "xFOILco.DLL" ALIAS "MAININIT" (CallParam AS STRING, RetResult1 AS STRING)
Der Compiler scheint das gut zu verarbeiten, aber der Linker meldet:
C:\Programme\FreeBASIC\bin\win32\ld.exe: connot find -lxFOILco.DLL
Die DLL steht im gleichen Directory, wie das Basic-Programm. Eine Expliziete Angabe mit -l <Pfad\datei> funktioniert auch nicht.
Was mache ich falsch?
DANKE für hilfreiche Antworten
Uwe |
|
Nach oben |
|
|
Sebastian Administrator
Anmeldungsdatum: 10.09.2004 Beiträge: 5969 Wohnort: Deutschland
|
Verfasst am: 17.02.2010, 13:15 Titel: |
|
|
Hallo und willkommen im Forum!
Funktioniert es vielleicht so?
Code: | DIM library AS ANY PTR
DIM xfMainInit AS SUB (BYVAL CallParam As ZString Ptr, BYVAL RetResult1 As ZString Ptr)
' DLL laden
library = DYLIBLOAD( "xFOILco" )
IF( library = 0 ) THEN
PRINT "Cannot load the xFOILco dynamic library, ";
PRINT "aborting program..."
END 1
END IF
' Funktion laden
xfMainInit = DYLIBSYMBOL( library, "MAININIT" )
IF( xfMainInit = 0 ) THEN
PRINT "Cannot get MAININIT function address ";
PRINT "from mydll library, aborting program..."
END 1
END IF
DIM Ausgabe As ZSTRING*512
xfMainInit ("Hallo",@Ausgabe)
PRINT TRIM(Ausgabe)
DYLIBFREE library
SLEEP |
(Siehe DYLIBLOAD in der Befehlsreferenz.)
Viele Grüße!
Sebastian _________________
Der Markt regelt das! | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen! |
|
Nach oben |
|
|
Uwe Wagner
Anmeldungsdatum: 17.02.2010 Beiträge: 2
|
Verfasst am: 17.02.2010, 13:52 Titel: funktioniert leider nicht |
|
|
Hallo Sebastian,
danke für die schnelle Antwort. Wenn ich das Programm compiliere und starte, will Windows einen "Problembericht" an MS senden und das Programm wird beendet.
Wenn ich als erstes mit Print einen kurzen Text ausgebe, wird der noch angezeigt, und gleich danach kommt dann wieder der Problembericht.
Gruß
Uwe |
|
Nach oben |
|
|
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
|