Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
alfonsospringer
Anmeldungsdatum: 27.04.2006 Beiträge: 445
|
Verfasst am: 04.07.2006, 14:32 Titel: libs in fb |
|
|
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 |
|
 |
jb

Anmeldungsdatum: 14.01.2005 Beiträge: 2010
|
Verfasst am: 04.07.2006, 14:33 Titel: |
|
|
Schau mal in deinen examples Ordner, da ist ein recht ausführliches Beispiel zum Erstellen von DLLS drin...
jb _________________ Elektronik und Programmieren |
|
Nach oben |
|
 |
alfonsospringer
Anmeldungsdatum: 27.04.2006 Beiträge: 445
|
Verfasst am: 04.07.2006, 14:41 Titel: |
|
|
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 |
|
 |
jb

Anmeldungsdatum: 14.01.2005 Beiträge: 2010
|
|
Nach oben |
|
 |
alfonsospringer
Anmeldungsdatum: 27.04.2006 Beiträge: 445
|
Verfasst am: 04.07.2006, 15:04 Titel: |
|
|
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 |
|
 |
jb

Anmeldungsdatum: 14.01.2005 Beiträge: 2010
|
Verfasst am: 04.07.2006, 15:08 Titel: |
|
|
Bevor ich mir den Mund fusselig rede: Schau dir den Ordner dll in dem examples-Ordner an, da wird alles erklärt.
/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 |
|
 |
alfonsospringer
Anmeldungsdatum: 27.04.2006 Beiträge: 445
|
Verfasst am: 04.07.2006, 15:10 Titel: |
|
|
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 |
|
 |
jb

Anmeldungsdatum: 14.01.2005 Beiträge: 2010
|
Verfasst am: 04.07.2006, 15:14 Titel: |
|
|
Du schreibst deine FUNCTION/was auch immer da rein und kompilierst den Source mit <fbc> -dll <filename>.
Fertisch
jb _________________ Elektronik und Programmieren |
|
Nach oben |
|
 |
alfonsospringer
Anmeldungsdatum: 27.04.2006 Beiträge: 445
|
Verfasst am: 04.07.2006, 15:16 Titel: |
|
|
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 |
|
 |
jb

Anmeldungsdatum: 14.01.2005 Beiträge: 2010
|
Verfasst am: 04.07.2006, 15:23 Titel: |
|
|
Würde auch gehen. Ich meinte aber in der IDE unter Ansicht -> Einstellungen -> FreeBASIC -> Compiler-Pfad.
jb _________________ Elektronik und Programmieren |
|
Nach oben |
|
 |
alfonsospringer
Anmeldungsdatum: 27.04.2006 Beiträge: 445
|
Verfasst am: 04.07.2006, 15:26 Titel: |
|
|
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 |
|
 |
jb

Anmeldungsdatum: 14.01.2005 Beiträge: 2010
|
|
Nach oben |
|
 |
alfonsospringer
Anmeldungsdatum: 27.04.2006 Beiträge: 445
|
Verfasst am: 04.07.2006, 15:37 Titel: |
|
|
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 |
|
 |
alfonsospringer
Anmeldungsdatum: 27.04.2006 Beiträge: 445
|
Verfasst am: 04.07.2006, 18:33 Titel: |
|
|
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 |
|
 |
jb

Anmeldungsdatum: 14.01.2005 Beiträge: 2010
|
Verfasst am: 04.07.2006, 18:41 Titel: |
|
|
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 |
|
 |
volta
Anmeldungsdatum: 04.05.2005 Beiträge: 1876 Wohnort: D59192
|
Verfasst am: 04.07.2006, 18:41 Titel: |
|
|
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 |
|
 |
alfonsospringer
Anmeldungsdatum: 27.04.2006 Beiträge: 445
|
Verfasst am: 04.07.2006, 18:42 Titel: |
|
|
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 |
|
 |
jb

Anmeldungsdatum: 14.01.2005 Beiträge: 2010
|
Verfasst am: 04.07.2006, 18:44 Titel: |
|
|
@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 |
|
 |
volta
Anmeldungsdatum: 04.05.2005 Beiträge: 1876 Wohnort: D59192
|
Verfasst am: 04.07.2006, 18:52 Titel: |
|
|
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 |
|
 |
jb

Anmeldungsdatum: 14.01.2005 Beiträge: 2010
|
|
Nach oben |
|
 |
|