Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

FreeBasic & Fortran.DLL

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Bibliotheken
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Uwe Wagner



Anmeldungsdatum: 17.02.2010
Beiträge: 2

BeitragVerfasst am: 17.02.2010, 12:59    Titel: FreeBasic & Fortran.DLL Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Sebastian
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 5969
Wohnort: Deutschland

BeitragVerfasst am: 17.02.2010, 13:15    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Uwe Wagner



Anmeldungsdatum: 17.02.2010
Beiträge: 2

BeitragVerfasst am: 17.02.2010, 13:52    Titel: funktioniert leider nicht Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Bibliotheken Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
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.

 Impressum :: Datenschutz