Seite 1 von 1
dll fest in exe einbinden
Verfasst: 15.02.2017 20:28
von marcelx
Hallo,
Ich möchte einer dll-Datei in mein Programm einbinden.
Ich habe folgende Eintrag gefunden:
http://forums.purebasic.com/german/view ... 16&t=27116
Leider ist de Link nicht mehr vorhanden.
Re: dll fest in exe einbinden
Verfasst: 15.02.2017 20:37
von _JON_
Re: dll fest in exe einbinden
Verfasst: 15.02.2017 20:43
von ts-soft
Statt meine MemoryModule nimm lieber dies hier:
http://www.purebasic.fr/english/viewtop ... 97#p499497
von Luis. Haste alles als PB-Source.
//edit: Iiih, da war einer schneller
PS: Ist aber nicht mit jeder DLL erlaubt und Antiviren-Programme mögen sowas auch nicht. Lieber normal DLL laden!
Re: dll fest in exe einbinden
Verfasst: 16.02.2017 09:58
von marcelx
Danke für die Antworten.
Ich habe es mit Luis-Code probiert und bekomme die Meldung
"Ungültiger Speicherzugriff.(Lesefehler an der Adresse 0)"
in der Zeile "if rmchartInit()"
Was habe ich da falsche gemacht ?
Code: Alles auswählen
IncludeFile "MemDLL.pbi"
PrototypeC.i rmchartInit()
PrototypeC glfwTerminate()
PrototypeC.i glfwGetVersionString()
Global hglfw = MemDLL_LoadLibrary(?rmchart)
Global rmchartInit.rmchartInit = MemDLL_GetProcAddress(hglfw, "rmchartInit")
Global glfwTerminate.glfwTerminate = MemDLL_GetProcAddress(hglfw, "glfwTerminate")
Global glfwGetVersionString.glfwGetVersionString = MemDLL_GetProcAddress(hglfw, "glfwGetVersionString")
Procedure Main()
If rmchartInit()
Debug PeekS(glfwGetVersionString(), -1, #PB_UTF8)
glfwTerminate()
EndIf
MemDLL_FreeLibrary(hglfw)
EndProcedure
Main()
DataSection
rmchart:
IncludeBinary "rmchart.dll"
EndDataSection
Re: dll fest in exe einbinden
Verfasst: 16.02.2017 18:07
von _JON_
marcelx hat geschrieben:Was habe ich da falsche gemacht ?
Du forderst von der DLL eine Funktion an, die diese wohl nicht hat.
Außerdem, wäre ein wenig "Error-Handling" erwünschenswert.
Re: dll fest in exe einbinden
Verfasst: 16.02.2017 18:53
von marcelx
Ich gebe zu, es war dilettantisch angepackt, ohne der Hintergrund von MemDll.pbi zu wissen.
Wie ich das verstehe, muss ich für jeden dll-funktion ein MemDLL_GetProcAddress() verwenden.
Ich überlege doch die dll mit zu verwenden; wäre doch einfacher.
Re: dll fest in exe einbinden
Verfasst: 16.02.2017 19:17
von ts-soft
marcelx hat geschrieben:Ich überlege doch die dll mit zu verwenden; wäre doch einfacher.
Das wäre in jedem Fall besser.
1. kein Verstoß gegen die Lizenz, falls es verboten sein sollte, die DLL zu includen.
2. mindert die Gefahr von false/positive (Antivirenprogramme, heuristik)
3. der Autor der DLL kommt auch zu seinem Recht / Anerkennung
Gruß
Thomas
Re: dll fest in exe einbinden
Verfasst: 16.02.2017 22:02
von marcelx
"Ich bin ein Fan von 'all in one' Programmen. Also alle nötigen Dateien sind in der Programmdatei enthalten"
Manchmal muss man Kompromissen schließen
Gruß
MarcelX