![]() |
minifmod.dll in resource?
hi, ich würde gern in meinem programm musik einbauen und benutze dafür MiniFmod,
funktioniert auch alles, aber ich muss zur .exe immer auch die minifmod.dll im gleichen ordner mitliefern, ich würde die minifmod.dll gerne in eine resource stecken, damit ich nur die .exe hab! hier der code der FMOD.pas:
Delphi-Quellcode:
könnt ihr mir helfen? :angel2:
unit FMOD;
interface function SongLoadFromFile(FileName: PChar): Integer; cdecl; external 'minifmod.dll'; function SongLoadFromResource(FileName: PChar): Integer; cdecl; external 'minifmod.dll'; procedure SongPlay(hMod: Integer); cdecl; external 'minifmod.dll'; procedure SongStop(hMod: Integer); cdecl; external 'minifmod.dll'; procedure SongFree(hMod: Integer); cdecl; external 'minifmod.dll'; function SongGetOrder(hMod: Integer): Integer; cdecl; external 'minifmod.dll'; function SongGetRow(hMod: Integer): Integer; cdecl; external 'minifmod.dll'; function SongGetTime(hMod: Integer): Integer; cdecl; external 'minifmod.dll'; implementation end. |
Re: minifmod.dll in resource?
Erstelle dir doch eine Resource mit der DLL, linke sie in die .exe und extrahieren die DLL später wieder. Wenn ich mich nicht irre, gibt es im Forum sogar ein kleines Tuturial.
|
Re: minifmod.dll in resource?
Mit der Suche [dp]dll resource7dll] findet man zum beispiel sowas:
![]() |
Re: minifmod.dll in resource?
ich kriegs absolut net hin :(
hab jetzt ne neue unit "ResLoad" angelegt, in der "FMOD.pas" verlinkt und das drin gespeichert:
Delphi-Quellcode:
unit ResLoad;
interface implementation function putbinresto(binresname: string; path: string): boolean; var ResSize, HG, HI, SizeWritten, hFileWrite: Cardinal; begin result := false; //find resource HI := FindResource(hInstance, @binresname[1], 'BINRES'); //if legal handle, go on if HI <> 0 then begin //load resource and check the handle HG := LoadResource(hInstance, HI); if HG <> 0 then begin //check resource size (needed to copy a block of data) ResSize := SizeOfResource(hInstance, HI); //create the file hFileWrite := CreateFile(@path[1], GENERIC_READ or GENERIC_WRITE, FILE_SHARE_READ or FILE_SHARE_WRITE, nil, CREATE_ALWAYS, FILE_ATTRIBUTE_ARCHIVE, 0); //if succeeded ... if hFileWrite <> INVALID_HANDLE_VALUE then try //write to it result := (WriteFile(hFileWrite, LockResource(HG)^, ResSize, SizeWritten, nil) and (SizeWritten = ResSize)); finally //close file CloseHandle(hFileWrite); end; end; end; end; end. bekomme aber ganz viele fehlermeldungen:
Code:
[Fehler] ResLoad.pas(13): Undefinierter Bezeichner: 'FindResource'
[Fehler] ResLoad.pas(18): Undefinierter Bezeichner: 'LoadResource' [Fehler] ResLoad.pas(22): Undefinierter Bezeichner: 'SizeOfResource' [Fehler] ResLoad.pas(24): Undefinierter Bezeichner: 'CreateFile' [Fehler] ResLoad.pas(24): Undefinierter Bezeichner: 'GENERIC_READ' [Fehler] ResLoad.pas(24): Undefinierter Bezeichner: 'GENERIC_WRITE' [Warnung] ResLoad.pas(24): Vorzeichenbehaftete und -lose Typen werden kombiniert - beide Operanden werden erweitert [Fehler] ResLoad.pas(25): Undefinierter Bezeichner: 'FILE_SHARE_READ' [Fehler] ResLoad.pas(25): Undefinierter Bezeichner: 'FILE_SHARE_WRITE' [Warnung] ResLoad.pas(25): Vorzeichenbehaftete und -lose Typen werden kombiniert - beide Operanden werden erweitert [Fehler] ResLoad.pas(26): Undefinierter Bezeichner: 'FILE_ATTRIBUTE_ARCHIVE' [Fehler] ResLoad.pas(28): Undefinierter Bezeichner: 'INVALID_HANDLE_VALUE' [Warnung] ResLoad.pas(28): Vorzeichenbehaftete und -lose Typen werden verglichen - beide Operanden werden erweitert [Fehler] ResLoad.pas(31): Undefinierter Bezeichner: 'WriteFile' [Fehler] ResLoad.pas(31): Undefinierter Bezeichner: 'LockResource' [Fehler] ResLoad.pas(31): Zeigertyp erwartet [Fehler] ResLoad.pas(32): Operator ist auf diesen Operandentyp nicht anwendbar [Fehler] ResLoad.pas(35): Undefinierter Bezeichner: 'CloseHandle' [Fataler Fehler] FMOD.pas(11): Verwendete Unit 'ResLoad.pas' kann nicht compiliert werden ich komm da echt nicht weiter, könnt ihr mir helfen? |
Re: minifmod.dll in resource?
Schau dir doch am besten mal an in welchen Units die ganzen "undefinierten Bezeichner" deklariert sind, und mach mal ne uses-Liste auf ;)
|
Re: minifmod.dll in resource?
Du musst die Windows-Unit einbinden. Allerdings hast du ein generelles Problem. In der Unit FMOD werden die Funktionen Statisch gebunden. Das bedeutet, dass zum Programmstart die benötigte DLL vorhanden sein muss. Ist sie es nicht, wird schon der Start abgebrochen und die DLL wird garnicht aus der Ressource gepackt. Du musst also 1. entweder ein kleines Installprogramm schreiben, was die DLL doch entpackt, oder 2. die FMOD so umschreiben, dass die Funktionen dynamisch eingebunden wird.
Stichworte wären hier ![]() ![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:08 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz