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:

DLL Erstellung mit grundsätzl. Frage :)

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



Anmeldungsdatum: 25.08.2008
Beiträge: 86
Wohnort: auf einer sonnigen Insel :)

BeitragVerfasst am: 25.05.2009, 10:58    Titel: DLL Erstellung mit grundsätzl. Frage :) Antworten mit Zitat

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... zwinkern Habe das hier aus "Wikibooks" gefunden...

ach ja, arbeite mit FBIDe und weiß nicht, wie ich "-dylib" kompilieren soll.. Wo stelle ich das ein??? lächeln

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


Anmeldungsdatum: 10.09.2004
Beiträge: 5969
Wohnort: Deutschland

BeitragVerfasst am: 25.05.2009, 11:23    Titel: Antworten mit Zitat

Hallo,

in den Beispielquelltexten, die dem Compiler unter /examples/dll beiliegen, finden sich übrigens auch Beispiele für DLLs - auch mit Informationen, was man beachten muss, wenn die DLL nachher in VisualBASIC benutzt werden soll.

In FBIDE lässt sich die DLL-Erstellung so einrichten:





Zu Bild 2: Der Parameter -exx ist optional, siehe Infos zu den Compilerparametern

Viele Grüße - ebenfalls aus dem sonnigen Nordhessen (noch ein Stückchen nördlicher zwinkern )!
Sebastian
_________________

Die gefährlichsten Familienclans | 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
St_W



Anmeldungsdatum: 22.07.2007
Beiträge: 956
Wohnort: Austria

BeitragVerfasst am: 25.05.2009, 11:27    Titel: Antworten mit Zitat

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 lächeln
_________________
Aktuelle FreeBasic Builds, Projekte, Code-Snippets unter http://users.freebasic-portal.de/stw/
http://www.mv-lacken.at Musikverein Lacken (MV Lacken)
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Löwenherz



Anmeldungsdatum: 25.08.2008
Beiträge: 86
Wohnort: auf einer sonnigen Insel :)

BeitragVerfasst am: 25.05.2009, 12:15    Titel: letzte Frage für meinen ersten DLL Test Antworten mit Zitat

Vielen Dank euch beiden lächeln ! Hat bis jetzt richtig gut geklappt... habe eine DLL und eine *.bi Datei und eine exe Datei zum Testen lächeln

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 grinsen

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
volta



Anmeldungsdatum: 04.05.2005
Beiträge: 1876
Wohnort: D59192

BeitragVerfasst am: 25.05.2009, 17:09    Titel: Antworten mit Zitat

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 grinsen )

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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Löwenherz



Anmeldungsdatum: 25.08.2008
Beiträge: 86
Wohnort: auf einer sonnigen Insel :)

BeitragVerfasst am: 25.05.2009, 17:57    Titel: Antworten mit Zitat

hi volta, das habe ich nun davon, haha, es klappt grinsen

super danke schön... habe alles nochmal durchgekaut, bis es endlich funktioniert hat... nicht ganz so einfach mit -dylib und ohne... zwinkern

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 lächeln
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 zwinkern

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
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
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