Как извлечь dll из ресурса - PullRequest
0 голосов
/ 11 августа 2010

мое приложение использует Bass.dll, и я добавил его в ресурс.Я хотел, чтобы он был извлечен до запуска приложения.как аннулировать это?

Ответы [ 3 ]

5 голосов
/ 12 августа 2010

Я думаю, что решение вашей проблемы описывается RPUZ или Крисом Торнтоном (оба за него проголосовали). Если извлечение файлов на жесткий диск вызывает у вас проблемы, вы должны знать, что вместо этого можно загрузить DLL непосредственно из памяти.

Зарко Гаджич объясняет на delphi.about.com .

5 голосов
/ 11 августа 2010

XBasic3000, я думаю, что ваша проблема в том, что, возможно, вы используете внешнее объявление, подобное этому

function Foo: integer; stdcall; external 'bass.dll';

, поэтому ОС не может разрешить адрес функции в dll.

Вы должны использовать функции LoadLibrary () и GetProcAddress () после извлечения DLL, таким образом вы можете избежать сбоя, проверив наличие DLL.

3 голосов
/ 11 августа 2010

Если вы извлекаете DLL, куда вы ее поместите? Ваше приложение не является установочным приложением (setup.exe), которое имеет особые привилегии, поэтому оно не может записывать в \ windows \ system32 или даже \ program files \ yourapp под Vista / Windows7. Попытка поместить его в программный каталог приведет к тому, что он будет расположен в другом месте, через VirtualStore. Поэтому вы должны проверить FileExists ('bass.dll') перед попыткой LoadLibrary ().

...