| Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
| Autor |
Nachricht |
alfonsospringer
Anmeldungsdatum: 27.04.2006 Beiträge: 445
|
Verfasst am: 04.07.2006, 13: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, 13: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, 13: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, 14: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, 14: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, 14:12, insgesamt einmal bearbeitet |
|
| Nach oben |
|
 |
alfonsospringer
Anmeldungsdatum: 27.04.2006 Beiträge: 445
|
Verfasst am: 04.07.2006, 14: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, 14: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, 14: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, 14: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, 14: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, 14: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, 14: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, 17: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, 17: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, 17: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, 19:21, insgesamt 3-mal bearbeitet |
|
| Nach oben |
|
 |
alfonsospringer
Anmeldungsdatum: 27.04.2006 Beiträge: 445
|
Verfasst am: 04.07.2006, 17: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, 17: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, 17: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 |
|
 |
|