 |
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 |
Löwenherz

Anmeldungsdatum: 25.08.2008 Beiträge: 86 Wohnort: auf einer sonnigen Insel :)
|
Verfasst am: 25.05.2009, 10:58 Titel: DLL Erstellung mit grundsätzl. Frage :) |
|
|
liebe Freund von Freebasic, ich habe vor, wieder mit FB einzusteigen, weil ich es u.a. riskieren will, eine DLL zu erstellen womit ich später ein anderes Programm mit aufbauen kann samt Library usw... Habe das hier aus "Wikibooks" gefunden...
ach ja, arbeite mit FBIDe und weiß nicht, wie ich "-dylib" kompilieren soll.. Wo stelle ich das ein???
declare sub PrintRot lib "Library" alias "PrintRot"(text as string)
declare function Quadrat lib "Library" alias "Quadrat" (a as double) as double
sub PrintRot(text as string) export
color 4
Print text
end sub
function Quadrat(a as double) as double export
return a^2
End function
! dann mit -dylib kompilieren. ???
für Hilfe bin ich sehr dankbar, liebe Grüße aus dem sonnigen Nordhessen, wünscht monsieur Löwenherz _________________ Das Leben ist wie eine Pralinenschachtel, man weiß nie, was dort drinnen für tolle wie böse Überraschungen stecken |
|
Nach oben |
|
 |
Sebastian Administrator

Anmeldungsdatum: 10.09.2004 Beiträge: 5969 Wohnort: Deutschland
|
|
Nach oben |
|
 |
St_W

Anmeldungsdatum: 22.07.2007 Beiträge: 956 Wohnort: Austria
|
Verfasst am: 25.05.2009, 11:27 Titel: |
|
|
FBide ist zum Einstellen von Parametern ziemlich unpraktisch. Du kannst unter Ansicht -> Einstellungen -> FreeBasic --> Compile-Befehl hin mit einem Leerzeichen getrennt einfach den Parameter dranhängen. Aber wenn du dann ein Programm wieder normal compilieren willst, musst du diesen Parameter wieder weggeben. Also, wie gesagt, ziemlich umständlich.
Du kannst ebenfalls den Compiler von der Kommandozeile aus aufrufen:
fbc "MeineBibliothek.bas" -dylib
wobei du natürlich "MeineBibliothek.bas" durch den Pfad und dateinamen deiner Quellcodedatei ersetzt.
Empfehlen würde ich dir aber die FBedit IDE, die verschiedene Build-Optionen erlaubt. Du kannst dann in der Drop-Down-Box in der oberen rechten Ecke auswählen, ob du ein Windows-Programm, Konsolenprogramm, eine Debug-Version, eine Bibliothek, etc. compilieren willst. FBedit bietet noch viele weitere sehr komfortable Funktionen, die FBide nicht kann.
//edit: Sebastian war wohl etwas schneller  _________________ Aktuelle FreeBasic Builds, Projekte, Code-Snippets unter http://users.freebasic-portal.de/stw/
http://www.mv-lacken.at Musikverein Lacken (MV Lacken) |
|
Nach oben |
|
 |
Löwenherz

Anmeldungsdatum: 25.08.2008 Beiträge: 86 Wohnort: auf einer sonnigen Insel :)
|
Verfasst am: 25.05.2009, 12:15 Titel: letzte Frage für meinen ersten DLL Test |
|
|
Vielen Dank euch beiden ! Hat bis jetzt richtig gut geklappt... habe eine DLL und eine *.bi Datei und eine exe Datei zum Testen
nur dies hier funzt noch nicht... weiß nicht ob ich damit eine neue Datei erstellen soll oder in Testlibrary einfüge...
dim PrintRot as sub (text as string)
dim Quadrat as function (a as double) as double
library = dylibload( "Library.dll" )
if library = 0 then
cls
?
? " DLL nicht gefunden."
sleep 1000,1
else
PrintRot = dylibsymbol( library, "PrintRot" )
quadrat = dylibsymbol( library, "Quadrat" )
PrintRot("Hallo Welt")
PrintRot(str$(Quadrat(5)))
sleep
End if
2.) http://www.freebasic-portal.de/index.php?s=tutorials&id=24&seite=1
das tutorial von twinky geht nicht richtig bei mir... hab's probiert... würde gerne eine bessere bzw. korrekte Beschreibung haben für den zweiten Teil mit yetlib.bi was da alles reingehört (und zwar korrekt;) ) und was ins Hauptprogramm hinein soll.. wäre toll... das tutorial fand ich sonst recht gut
servus, Löwenherz
beste Grüße noch einmal, servus, Löwenherz _________________ Das Leben ist wie eine Pralinenschachtel, man weiß nie, was dort drinnen für tolle wie böse Überraschungen stecken |
|
Nach oben |
|
 |
volta
Anmeldungsdatum: 04.05.2005 Beiträge: 1876 Wohnort: D59192
|
Verfasst am: 25.05.2009, 17:09 Titel: |
|
|
Hi,
in eine bi-Datei kommen (in diesem Fall) nur die Deklarationen.
Eine 'Library.bi' für das erste Beispiel von dir sieht dann so aus:
Code: | Declare Sub PrintRot Lib "Library" Alias "PrintRot"(text As String)
Declare Function Quadrat Lib "Library" Alias "Quadrat" (a As Double) As Double |
Das kannst du auch für die DLL nutzen:
'Library.bas'
Code: | 'mit fbc -dylib "Library.bas" 'Kompilieren', aber nicht 'Starten'
#include once "Library.bi"
Sub PrintRot(text As String) Export
Color 4
Print text
End Sub
Function Quadrat(a As Double) As Double Export
Return a^2
End Function | Wichtig sind hier die 'EXPORT' Einträge!
(Das fehlt 2x in dem Tutorial von ytwinky )
In der 'Test__Library.bas' fehlt die Daklaration 'DIM library AS ANY PTR'
Code: | 'mit fbc -s console "test_Library.bas" ->'Starten'
Dim PrintRot As Sub (text As String)
Dim Quadrat As Function (a As Double) As Double
DIM library AS ANY PTR
library = DylibLoad( "Library.dll" )
If library = 0 Then
Cls
?
? " DLL nicht gefunden."
Sleep 1000,1
Else
PrintRot = DyLibSymbol( library, "PrintRot" )
Quadrat = DyLibSymbol( library, "Quadrat" )
PrintRot("Hallo Welt")
PrintRot(Str$(Quadrat(5)))
Sleep
DYLIBFREE library 'Besser is es
End If | Achte aber darauf das es als '-s console' und nicht als '-dylib' gestartet wird!
Wenn etwas nicht so funzt, sieh mal auf die Fehlermeldungen.
So geht es dann auch:
Code: | 'mit fbc -s console "test2_Library.bas" ->'Starten'
'zu diesem Beispiel werden die beiden Dateien
'Library.dll
'libLibrary.dll.a
'benötigt. Die 'libLibrary.dll.a' wird mit der dll
'im gleichen Ordner erzeugt.
#Include Once "Library.bi"
PrintRot("Hallo Welt")
PrintRot(Str(Quadrat(5)))
Sleep
|
_________________ Warnung an Choleriker:
Dieser Beitrag kann Spuren von Ironie & Sarkasmus enthalten.
Zu Risiken & Nebenwirkungen fragen Sie Ihren Therapeuten oder Psychiater. |
|
Nach oben |
|
 |
Löwenherz

Anmeldungsdatum: 25.08.2008 Beiträge: 86 Wohnort: auf einer sonnigen Insel :)
|
Verfasst am: 25.05.2009, 17:57 Titel: |
|
|
hi volta, das habe ich nun davon, haha, es klappt
super danke schön... habe alles nochmal durchgekaut, bis es endlich funktioniert hat... nicht ganz so einfach mit -dylib und ohne...
find ich einfach klasse, so schnelle Hilfe, danke! Werde weiterhin fleissig sein und kommen noch viele Fragen, bin mir sicher !
ach ja:
Zitat: |
DIM library AS ANY PTR
|
hat bei mir auch ohne das im ersten Beispiel gefunzt
danke für den Tipp...
schaue mir das nächste mal FBEDIT an... hoffe ich kann das installieren bzw. richtig einbauen im Freebasic Verzeichnis bzw. den Pfad zum Kompilieren, da hatte ich schon mal Probleme mit... deswegen habe ich zuerst FBIDE genommen
servus, bis bald mal wieder, Lionheart _________________ Das Leben ist wie eine Pralinenschachtel, man weiß nie, was dort drinnen für tolle wie böse Überraschungen stecken |
|
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.
|
|