.dll in Resourcen einbinden
-
Hallo Leute!
Ich hab ein programm das auf eine .dll zurückgreift um Musik zu spielen(bassmod.dll) und muss die jetzt immer im Ordner der.exe mit rumschleppen...
Hab jetzt was gehört das ich die dll auch in die Resourcen packen kann und hab das prompt mal Versucht leider kommt dan eine Fehlermeldung es fehlt die bassmod.dll
Google hilft mir leider auch nicht weiter... Was kann ich tun?Ein weiteres Problem ist das dass Musikstück vll auch grade in die Exe miteingebunden werden sollte..., ich rufe bis dato auf mit:
BOOL WINAPI BASSMOD_MusicLoad( BOOL mem, void *file, DWORD offset, DWORD length, DWORD flags ); BASSMOD_MusicLoad(false, "AGRESSiON.mod", 0, 0, BASS_MUSIC_LOOP);//Wenn die .mod datei im selben Ordner liegt sieht das so aus
im Manual steht folgendes dazu:
Parameters
mem TRUE = load the MOD music from memory.
file Filename (mem = FALSE) or a memory location (mem = TRUE).
offset File offset to load the MOD music from (only used if mem = FALSE).
length Data length... 0 = use all data up to the end of file. If length over-runs the end of the file, it'll automatically be lowered to the end of the file.
flags A combination of these flags. [...Flags...]woher nehme ich denn die offsets wenn ich die Datei in die Resourcen einbette, bzw wie ist dann der filename? Hab schon etwas experimentiert aber schaf es nicht die Musik abzuspielen!
Bin für jede Hilfe Dankbar!
-
Die Frage wird hier so alle paar Wochen mal gestellt.
Antwort: grunsätzlich geht das (über Umwege), aber es ist den Aufwand ganz sicher nicht wert!Wenn du keine externen DLLs willst, dann sieh lieber zu, dass du eine statische Version der BASSMOD DLL bekommst. Sollte es diese nicht geben, dann finde dich einfach damit ab, dass die DLL mit ausgeliefert werden muss.
Nachdem du ja mit an Sicherheit grenzender Wahrscheinlichkeit eine Lizenz hast, gibt es auch garkeinen Grund die BASSMOD DLL zu verstecken. Nen?
-
mmmh ich hab leider nix gefunden weder über google noch im forum... nur für win32
bassmod ist open source und ich will sie nur ind das programm integrieren weil es besser aus sieht... die .mod date die die sounds enthält würde ich auch gern in die ressourcen legen, und wenn ich mem = true setze woher bekomme ich dann den richtigen offset damit die datei abgespielt wird?Parameters
mem TRUE = load the MOD music from memory.
file Filename (mem = FALSE) or a memory location (mem = TRUE).
offset File offset to load the MOD music from (only used if mem = FALSE).
length Data length... 0 = use all data up to the end of file. If length over-runs the end of the file, it'll automatically be lowered to the end of the file.
flags A combination of these flags. [...Flags...]wäre nett wenn jemand helfen könnte, ich hab die .mod datei zu resourcen hinzugefügt und mem = true gesetzt aber ich glaub ich muss noch ofset angeben aber hab keine ahnung wo ich das finden kann ...
Vielen Dank für eure Hilfe!
-
Das einbinden des .mod Files sollte relativ einfach sein. Der Teil wo der Aufwand zu gross wird, ist die DLL mit in die .exe zu packen.
.mod File aus Resource laden:
#include <windows.h> #include <tchar.h> int main() { // daten der resource HMODULE module = 0; // 0 für's .exe File TCHAR const* resourceName = _T("Resource-Name"); // gibst du im resource-script an TCHAR const* resourceType = _T("Resource-Type"); // gibst du im resource-script an // zeiger auf die resource holen HRSRC resourceHandle = ::FindResource(module, resourceName, resourceType); // resource finden HGLOBAL resourceData = ::LoadResource(module, resourceHandle); // resource "laden" DWORD resourceSize = ::SizeofResource(module, resourceHandle); // grösse ermitteln void* resourcePtr = ::LockResource(resourceData); // zeiger auf resource holen // da resourcen sowieso über's .exe File in den Speicher gemappt sind, muss hier auch nichts freigegeben werden // -> keinerlei Cleanup nötig nachdem die resource nichtmehr gebraucht wird // übergeben an BASSMOD BASSMOD_MusicLoad( true, // daten sind im speicher, nicht in einem file ... resourcePtr, // ... und zwar hier 0, // wenn die resource direkt ein .mod file ist, ist der offset null resourceSize, // die grösse der .mod file daten BASS_MUSIC_LOOP); // flags - was auch immer // ... return 0; }
Nicht getestet aber müsste so passen.
-
NightManiac schrieb:
ich will sie nur ind das programm integrieren weil es besser aus sieht
wenn es nur um das Aussehen geht dann werde Designer (die verdienen auch mehr Geld)
je mehr Dateien Du hast um so einfacher (vor allem kleiner) werden Updates ... stell Dir vor Du hast alles zusammen in die EXE gepackt, die ist nun 2.5 GB groß ... Du machst eine kleine Detailänderung - dennoch muss ich 2.5 GB runter laden ... wieso?!