Здравствуйте, уважаемые программисты.
Есть DLL, в который внедрены ресурсы (много звуковых файлов). Пишу код вида
Код:
library MyLib;
uses
System.SysUtils,
System.Classes, mmSystem, WinAPI.Windows;
{$R MyRes.res}
procedure playClick (button: pchar);
var hResInfo: hrsrc;
begin
hResInfo:=FindResource(hInstance, button, RT_RCDATA);
if hresInfo<>0 then
sndPlaySound(button, SND_RESOURCE + SND_ASYNC + SND_NODEFAULT)
else
sndPlaySound('remain', SND_RESOURCE + SND_ASYNC + SND_NODEFAULT)
end;
exports playClick;
end.
Однако ресурсы почему-то не внедряются. Если создать программу с вызовом DLL вида
Код:
type
TForm1 = class(TForm)
procedure FormKeyPress(Sender: TObject; var Key: Char);
private
{ Private declarations }
public
{ Public declarations }
end;
procedure playClick(button: pchar); stdcall; external 'MyLib.dll';
var
Form1: TForm1;
implementation
{$R *.dfm}
{$R MyRes.res} //<---- если это убрать, то не работает
procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
var s:string;
begin
s:='e'+Key;
PlayClick(pchar(s));
end;
тогда работает как надо (по нажатию на клавишу идет звук). Но если убрать ресурс отсюда, то звук не работает. А я хочу, чтобы ресурсы были вшиты в библиотеку, здесь они не нужны. Почему не получается?