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 :mrgreen:

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