Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Bino249
Anmeldungsdatum: 12.01.2008 Beiträge: 5 Wohnort: Menteroda/Thüringen
|
Verfasst am: 12.01.2008, 13:26 Titel: DLL konvertieren |
|
|
kann man eine VB-DLL nach Freeebasic konvertieren oder mu? man den Quellcode umschreiben und wie geht es am schnellsten ? |
|
Nach oben |
|
 |
Sebastian Administrator

Anmeldungsdatum: 10.09.2004 Beiträge: 5969 Wohnort: Deutschland
|
|
Nach oben |
|
 |
Bino249
Anmeldungsdatum: 12.01.2008 Beiträge: 5 Wohnort: Menteroda/Thüringen
|
Verfasst am: 13.01.2008, 01:43 Titel: |
|
|
Hallo Sebastian
ich könnte dir die source codes zutgänglich machen sage mir nur wo ich sie hinladen soll.
MfG Bino |
|
Nach oben |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 13.01.2008, 01:47 Titel: |
|
|
http://rafb.net/paste/ _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
 |
|
Nach oben |
|
 |
Sebastian Administrator

Anmeldungsdatum: 10.09.2004 Beiträge: 5969 Wohnort: Deutschland
|
|
Nach oben |
|
 |
Bino249
Anmeldungsdatum: 12.01.2008 Beiträge: 5 Wohnort: Menteroda/Thüringen
|
Verfasst am: 15.01.2008, 00:42 Titel: |
|
|
hi, ich glaube ich habe einen einfacheren weg gefunden. Habe eine "normale" win dll gefunden die im system32 Ordner von xp steht, mit dem mitgeliefertem beispielprogramm inVB funzt sie auch nur IN FB haut es nicht hin, habe sie auch schon in den system orner kopiert und die vorschläge mit
#INCLIB "aaaa.dll"
Dim hndl as INTEGER
hndl=DYLIBLOAD("aaaa.dll")
ausprobiert immer das gleiche
ld.exe: cannot find -laaaa.dll
ich jetzt ratlosjavascript:emoticon(' ')
weinen |
|
Nach oben |
|
 |
volta
Anmeldungsdatum: 04.05.2005 Beiträge: 1876 Wohnort: D59192
|
Verfasst am: 15.01.2008, 11:54 Titel: |
|
|
Hi Bino249,
#INCLIB ist nicht die richtige Anweisung um an die Funktionen der DLL zu kommen.
Code: | Dim hndl as INTEGER
hndl=DYLIBLOAD("aaaa.dll") | ist schon besser
Weiter brauchst du Informationen welche Function/Sub du aus der DLL ausführen möchtest.
Unter den Examples im FB-Verzeichnis (... \EXAMPLES\DLL) findest du die testload.bas, die zeigt wie man das macht.
Code: | dim addnumbers as function( byval operand1 as integer, byval operand2 as integer ) as integer
addnumbers = dylibsymbol( hndl, "AddNumbers" ) | Hier wird die Funktion "AddNumbers" definiert (d.h. mit welchen Werten muss sie gefüttert werden und welchen Wert gibt sie zurück).
Code: | print addnumbers( 4321, 7654 ) | Dann kannst du sie benutzen. _________________ Warnung an Choleriker:
Dieser Beitrag kann Spuren von Ironie & Sarkasmus enthalten.
Zu Risiken & Nebenwirkungen fragen Sie Ihren Therapeuten oder Psychiater. |
|
Nach oben |
|
 |
Bino249
Anmeldungsdatum: 12.01.2008 Beiträge: 5 Wohnort: Menteroda/Thüringen
|
Verfasst am: 15.01.2008, 19:29 Titel: |
|
|
Ich habe nun das ganze doch ins NoPaste System hochgeladen,
da ich denke das nur so der Zusammenhang logisch klar wird.
Derletzte vorschlag bringt nur eine weitere Fehlermeldung und zwar in der
DIM Addnumbers .... Zeile
Vieleicht hilfts
MfG Bino249 |
|
Nach oben |
|
 |
volta
Anmeldungsdatum: 04.05.2005 Beiträge: 1876 Wohnort: D59192
|
Verfasst am: 16.01.2008, 00:05 Titel: |
|
|
natürlich gibt es eine Fehlermeldung, da in deiner DLL keine Funktion namens "AddNumbers" existiert.
Code: | Dim hndl As integer
hndl = DYLIBLOAD("K8055D.dll")
Dim opendevice As Function(ByVal cardadress As Integer) As Integer
opendevice = DYLIBSYMBOL(hndl,"opendevice")
Dim closedevice As Sub()
closedevice = DYLIBSYMBOL(hndl,"closedevice")
... 'Hier alle weiteren Functionen und Subs der K8055D.dll definieren
...
...
Sub connect()
DIM cardadress AS Integer
DIM h AS Integer
DIM card as Integer
cardadress = 3
h = opendevice(cardadress)
card = cardadress
End Sub |
Achtung: die Variablen cardadress, h und card sind nur in der Sub gültig d.h. nach END SUB kennt FreeBASIC diese Variablen nicht mehr! _________________ Warnung an Choleriker:
Dieser Beitrag kann Spuren von Ironie & Sarkasmus enthalten.
Zu Risiken & Nebenwirkungen fragen Sie Ihren Therapeuten oder Psychiater. |
|
Nach oben |
|
 |
Michael712 aka anfänger, programmierer
Anmeldungsdatum: 26.03.2005 Beiträge: 1593
|
Verfasst am: 16.01.2008, 00:12 Titel: |
|
|
Zitat: | #INCLIB ist nicht die richtige Anweisung um an die Funktionen der DLL zu kommen. |
[klugscheiß]
Das stimmt nicht ganz. Man kann sehr wohl eine normale dll per #inclib in freebasic benutzen. Allerdings muss dafür eine .dll.a in freebasic/lib/win32 existieren, die man allerdings AFAIR mit dlltool, welches in freebasic/bin ist, erstellen kann. Sieht dann im Programm genau so aus, als würde man eine lib.a benutzen.[/klugscheiß] _________________
Code: | #include "signatur.bi" |
|
|
Nach oben |
|
 |
Bino249
Anmeldungsdatum: 12.01.2008 Beiträge: 5 Wohnort: Menteroda/Thüringen
|
Verfasst am: 16.01.2008, 03:31 Titel: |
|
|
es funzt trotzdem nicht. Bringt es etwas die DLL ins BIN/WIN32 von FBEdit
zu kopieren ?
MfG Bino |
|
Nach oben |
|
 |
volta
Anmeldungsdatum: 04.05.2005 Beiträge: 1876 Wohnort: D59192
|
Verfasst am: 16.01.2008, 13:29 Titel: |
|
|
Was funzt nicht?
Nein, DLLs werden vom Betriebssystem nur im Verzeichnis des ausgeführten Programms und im System-Verzeichnis gesucht.
?? bei mir gibt es kein Verzeichnis BIN/WIN32 unter FBEdit. _________________ Warnung an Choleriker:
Dieser Beitrag kann Spuren von Ironie & Sarkasmus enthalten.
Zu Risiken & Nebenwirkungen fragen Sie Ihren Therapeuten oder Psychiater. |
|
Nach oben |
|
 |
|