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:

libs in fb
Gehe zu Seite 1, 2, 3  Weiter
 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
alfonsospringer



Anmeldungsdatum: 27.04.2006
Beiträge: 445

BeitragVerfasst am: 04.07.2006, 14:32    Titel: libs in fb Antworten mit Zitat

wie verwendet man in freebasic eigentlich librarys ? Wie ersteelt man welche, wie ruft man sie auf?
_________________
Die Antworten zu fast allen Fragen des Lebens findest du entweder im MonsterFAQ oder der Befehlsreferenz - Und wenn du gar nicht mehr weiter weisst ? -> Wikipedia

ALLE RECHTSCHREIBFEHLER DIE ICH MACHE SIND BEABSICHTIGT, DAMIT DIE LEUTE, DIE SPAß DARAN HABEN SOLCHE ZU FINDEN, ETWAS ZU TUN HABEN
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden MSN Messenger
jb



Anmeldungsdatum: 14.01.2005
Beiträge: 2010

BeitragVerfasst am: 04.07.2006, 14:33    Titel: Antworten mit Zitat

Schau mal in deinen examples Ordner, da ist ein recht ausführliches Beispiel zum Erstellen von DLLS drin...

jb
_________________
Elektronik und Programmieren
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
alfonsospringer



Anmeldungsdatum: 27.04.2006
Beiträge: 445

BeitragVerfasst am: 04.07.2006, 14:41    Titel: Antworten mit Zitat

was sind dlls ? (Ja, ich frage tatsächlich etwas triviales oder ?)
_________________
Die Antworten zu fast allen Fragen des Lebens findest du entweder im MonsterFAQ oder der Befehlsreferenz - Und wenn du gar nicht mehr weiter weisst ? -> Wikipedia

ALLE RECHTSCHREIBFEHLER DIE ICH MACHE SIND BEABSICHTIGT, DAMIT DIE LEUTE, DIE SPAß DARAN HABEN SOLCHE ZU FINDEN, ETWAS ZU TUN HABEN
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden MSN Messenger
jb



Anmeldungsdatum: 14.01.2005
Beiträge: 2010

BeitragVerfasst am: 04.07.2006, 14:46    Titel: Antworten mit Zitat

Eine DLL ist eine dynamische Bibliothek, siehe Wikipedia.
Bietet dir genau das, was du suchst.

jb
_________________
Elektronik und Programmieren
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
alfonsospringer



Anmeldungsdatum: 27.04.2006
Beiträge: 445

BeitragVerfasst am: 04.07.2006, 15:04    Titel: Antworten mit Zitat

angenommen ich will in meinem programm
diese function benutzen, aber ich will sie in einer DLL haben

Code:

Function CheckMousePos(x, y, Xmin, Xmax, Ymin, Ymax)
  Select Case x
    Case Xmin To Xmax
      Select Case y
        Case Ymin To Ymax
          Return 1=1
'if I wanted to return a value<>0 I would have written 1..
'..but I wanted to return a value that is TRUE :D
      End Select
  End Select
  Return 1=0 's.a. 1=0 is definitly FALSE ;)
End Function


1. Wie muss die DLL aussehen?

2. Wie muss das Programm aussehen das die function aufruft?
_________________
Die Antworten zu fast allen Fragen des Lebens findest du entweder im MonsterFAQ oder der Befehlsreferenz - Und wenn du gar nicht mehr weiter weisst ? -> Wikipedia

ALLE RECHTSCHREIBFEHLER DIE ICH MACHE SIND BEABSICHTIGT, DAMIT DIE LEUTE, DIE SPAß DARAN HABEN SOLCHE ZU FINDEN, ETWAS ZU TUN HABEN
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden MSN Messenger
jb



Anmeldungsdatum: 14.01.2005
Beiträge: 2010

BeitragVerfasst am: 04.07.2006, 15:08    Titel: Antworten mit Zitat

Bevor ich mir den Mund fusselig rede: Schau dir den Ordner dll in dem examples-Ordner an, da wird alles erklärt. lächeln

/edit: Der Source zur DLL sollte keine Befehle auf der Modulebene enthalten; sprich er sollte
nur aus SUBs/FUNCTIONs/DIMs/TYPEs/etc. bestehen.

Die DLL kannst du einbinden mit
Code:

declare function CkeckMouse lib "DeineDLL" alias "CkeckMouse" (byval Argument1, ...) as Datentyp

Ist jetzt natürlich nicht richtig, erklärt hier nur die Anwendung.

jb
_________________
Elektronik und Programmieren


Zuletzt bearbeitet von jb am 04.07.2006, 15:12, insgesamt einmal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
alfonsospringer



Anmeldungsdatum: 27.04.2006
Beiträge: 445

BeitragVerfasst am: 04.07.2006, 15:10    Titel: Antworten mit Zitat

O.K. aber wie mache ich aus der bas eine dll?
_________________
Die Antworten zu fast allen Fragen des Lebens findest du entweder im MonsterFAQ oder der Befehlsreferenz - Und wenn du gar nicht mehr weiter weisst ? -> Wikipedia

ALLE RECHTSCHREIBFEHLER DIE ICH MACHE SIND BEABSICHTIGT, DAMIT DIE LEUTE, DIE SPAß DARAN HABEN SOLCHE ZU FINDEN, ETWAS ZU TUN HABEN
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden MSN Messenger
jb



Anmeldungsdatum: 14.01.2005
Beiträge: 2010

BeitragVerfasst am: 04.07.2006, 15:14    Titel: Antworten mit Zitat

Du schreibst deine FUNCTION/was auch immer da rein und kompilierst den Source mit <fbc> -dll <filename>.
Fertisch zwinkern

jb
_________________
Elektronik und Programmieren
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
alfonsospringer



Anmeldungsdatum: 27.04.2006
Beiträge: 445

BeitragVerfasst am: 04.07.2006, 15:16    Titel: Antworten mit Zitat

also von der commandozeile aus oder wie?
_________________
Die Antworten zu fast allen Fragen des Lebens findest du entweder im MonsterFAQ oder der Befehlsreferenz - Und wenn du gar nicht mehr weiter weisst ? -> Wikipedia

ALLE RECHTSCHREIBFEHLER DIE ICH MACHE SIND BEABSICHTIGT, DAMIT DIE LEUTE, DIE SPAß DARAN HABEN SOLCHE ZU FINDEN, ETWAS ZU TUN HABEN
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden MSN Messenger
jb



Anmeldungsdatum: 14.01.2005
Beiträge: 2010

BeitragVerfasst am: 04.07.2006, 15:23    Titel: Antworten mit Zitat

Würde auch gehen. Ich meinte aber in der IDE unter Ansicht -> Einstellungen -> FreeBASIC -> Compiler-Pfad.

jb
_________________
Elektronik und Programmieren
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
alfonsospringer



Anmeldungsdatum: 27.04.2006
Beiträge: 445

BeitragVerfasst am: 04.07.2006, 15:26    Titel: Antworten mit Zitat

gefunden aber ich bekomme keine dll sondern eine dll.a raus
_________________
Die Antworten zu fast allen Fragen des Lebens findest du entweder im MonsterFAQ oder der Befehlsreferenz - Und wenn du gar nicht mehr weiter weisst ? -> Wikipedia

ALLE RECHTSCHREIBFEHLER DIE ICH MACHE SIND BEABSICHTIGT, DAMIT DIE LEUTE, DIE SPAß DARAN HABEN SOLCHE ZU FINDEN, ETWAS ZU TUN HABEN


Zuletzt bearbeitet von alfonsospringer am 04.07.2006, 15:32, insgesamt einmal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden MSN Messenger
jb



Anmeldungsdatum: 14.01.2005
Beiträge: 2010

BeitragVerfasst am: 04.07.2006, 15:27    Titel: Antworten mit Zitat

Na super lächeln

jb
_________________
Elektronik und Programmieren
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
alfonsospringer



Anmeldungsdatum: 27.04.2006
Beiträge: 445

BeitragVerfasst am: 04.07.2006, 15:37    Titel: Antworten mit Zitat

Code:

Function CheckMousePos(x, y, Xmin, Xmax, Ymin, Ymax)
  Select Case x
    Case Xmin To Xmax
      Select Case y
        Case Ymin To Ymax
          Return 1=1
'if I wanted to return a value<>0 I would have written 1..
'..but I wanted to return a value that is TRUE :D
      End Select
  End Select
  Return 1=0 's.a. 1=0 is definitly FALSE ;)
End Function


ist das als dll denn ok?

ich versteh nicht wie ich sie dann aufrufe. (Ich hab mir die exaples angeguckt)
_________________
Die Antworten zu fast allen Fragen des Lebens findest du entweder im MonsterFAQ oder der Befehlsreferenz - Und wenn du gar nicht mehr weiter weisst ? -> Wikipedia

ALLE RECHTSCHREIBFEHLER DIE ICH MACHE SIND BEABSICHTIGT, DAMIT DIE LEUTE, DIE SPAß DARAN HABEN SOLCHE ZU FINDEN, ETWAS ZU TUN HABEN
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden MSN Messenger
alfonsospringer



Anmeldungsdatum: 27.04.2006
Beiträge: 445

BeitragVerfasst am: 04.07.2006, 18:33    Titel: Antworten mit Zitat

kann mir jemand villeicht mal erklaeren wie ich auf die dll zugreifen kann?
_________________
Die Antworten zu fast allen Fragen des Lebens findest du entweder im MonsterFAQ oder der Befehlsreferenz - Und wenn du gar nicht mehr weiter weisst ? -> Wikipedia

ALLE RECHTSCHREIBFEHLER DIE ICH MACHE SIND BEABSICHTIGT, DAMIT DIE LEUTE, DIE SPAß DARAN HABEN SOLCHE ZU FINDEN, ETWAS ZU TUN HABEN
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden MSN Messenger
jb



Anmeldungsdatum: 14.01.2005
Beiträge: 2010

BeitragVerfasst am: 04.07.2006, 18:41    Titel: Antworten mit Zitat

Nehmen wir mal an, deine .BAS-Datei heißt Prog.bas.

Also wenn du den Code aben mit -dll kompilierst wird die .DLL-Datei Prog.DLL erstellt.
Um dann auf die Funktionen der DLL zuzugreifen, musst du die Funktionen, die du in der
DLL integriert hast, am Programmanfang deklarieren. Bei deiner Funktion wäre das

Code:
Declare Function CheckMousePos Lib "Prog" alias "CheckMousePos" (x, y, Xmin, Xmax, Ymin, Ymax)

Die DLL muss sich im selben Verzeichnis wie die EXE befinden.
Auf die Funktion kannst du dann wie gewohnt zugreifen.

jb
_________________
Elektronik und Programmieren
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
volta



Anmeldungsdatum: 04.05.2005
Beiträge: 1876
Wohnort: D59192

BeitragVerfasst am: 04.07.2006, 18:41    Titel: Antworten mit Zitat

ja,
so wird eine dll in FB erstellt:
Code:
'als mydll_.bas speichern
'mit "<$fbc>"  -dll "<$file>" kompilieren
declare function CheckMousePos lib "mydll_" _
          alias "CheckMousePos" (byval x as integer, byval y as integer, _
                                 byval Xmin as integer, byval Xmax as integer, _
                                 byval Ymin as integer, byval Ymax as integer) as integer


Function CheckMousePos(byval x as integer, byval y as integer, _
                       byval Xmin as integer, byval Xmax as integer, _
                       byval Ymin as integer, byval Ymax as integer) as integer export
  Select Case x
    Case Xmin To Xmax
      Select Case y
        Case Ymin To Ymax
          Return 1=1
'if I wanted to return a value<>0 I would have written 1..
'..but I wanted to return a value that is TRUE :D
      End Select
  End Select
  Return 1=0 's.a. 1=0 is definitly FALSE ;)
End Function

Diese dll kannst du so nutzen:
Code:
'als test_mylib_.bas speichern

Dim library As Integer
Dim CheckMousePos As Function(Byval x As Integer, Byval y As Integer, _
                              Byval Xmin As Integer, Byval Xmax As Integer, _
                              Byval Ymin As Integer, Byval Ymax As Integer) As Integer

library = Dylibload( "mydll_" )
If( library = 0 ) Then
  Print "mydll_ kann nicht geladen werden, Programm beendet"
  Sleep 'EDIT/ sonst sieht man den Hinweis nicht
  End 1
End If

CheckMousePos = Dylibsymbol( library, "CheckMousePos" )
If( CheckMousePos = 0 ) Then
  Print "kann die Funktion CheckMousePos nicht finden, Programm beendet"
  Sleep 'EDIT/ sonst sieht man den Hinweis nicht
  End 1
End If


?"OK"
Sleep

'Am Ende des Programms oder wenn die Funktion nicht mehr gebraucht wird
Dylibfree library
End

Gruß Volta
_________________
Warnung an Choleriker:
Dieser Beitrag kann Spuren von Ironie & Sarkasmus enthalten.
Zu Risiken & Nebenwirkungen fragen Sie Ihren Therapeuten oder Psychiater.


Zuletzt bearbeitet von volta am 04.07.2006, 20:21, insgesamt 3-mal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
alfonsospringer



Anmeldungsdatum: 27.04.2006
Beiträge: 445

BeitragVerfasst am: 04.07.2006, 18:42    Titel: Antworten mit Zitat

1. Ich bekaeme aber prog.dll.a
_________________
Die Antworten zu fast allen Fragen des Lebens findest du entweder im MonsterFAQ oder der Befehlsreferenz - Und wenn du gar nicht mehr weiter weisst ? -> Wikipedia

ALLE RECHTSCHREIBFEHLER DIE ICH MACHE SIND BEABSICHTIGT, DAMIT DIE LEUTE, DIE SPAß DARAN HABEN SOLCHE ZU FINDEN, ETWAS ZU TUN HABEN
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden MSN Messenger
jb



Anmeldungsdatum: 14.01.2005
Beiträge: 2010

BeitragVerfasst am: 04.07.2006, 18:44    Titel: Antworten mit Zitat

@Volta: So wird die DLL aber zur Laufzeit geladen, einfach über die Deklaration eingebunden, und das ist irgendwie unkomplizierter finde ich...

/edit: die .DLL.A sind die statischen Bibliotheken. Es sollte aber eigentlich auch eine .DLL erstellt werden...

jb
_________________
Elektronik und Programmieren
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
volta



Anmeldungsdatum: 04.05.2005
Beiträge: 1876
Wohnort: D59192

BeitragVerfasst am: 04.07.2006, 18:52    Titel: Antworten mit Zitat

richtig jb,
aber erst mal sollte man sich so davon überzeugen ob die dll funktioniert!
_________________
Warnung an Choleriker:
Dieser Beitrag kann Spuren von Ironie & Sarkasmus enthalten.
Zu Risiken & Nebenwirkungen fragen Sie Ihren Therapeuten oder Psychiater.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
jb



Anmeldungsdatum: 14.01.2005
Beiträge: 2010

BeitragVerfasst am: 04.07.2006, 18:58    Titel: Antworten mit Zitat

Na OK, hast Recht.

jb
_________________
Elektronik und Programmieren
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC. Alle Zeiten sind GMT + 1 Stunde
Gehe zu Seite 1, 2, 3  Weiter
Seite 1 von 3

 
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