如何从资源中提取DLL

时间:2010-08-11 05:17:44

标签: delphi dll extraction

我的应用程序使用Bass.dll并将其添加到资源中。我想在应用程序启动之前将其解压缩。如何取消它?

3 个答案:

答案 0 :(得分:5)

XBasic3000,我认为您的问题可能就是使用这样的外部声明

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

因此操作系统无法解析dll中函数的地址。

而是在提取DLL后必须使用LoadLibrary()GetProcAddress()函数,这样可以通过检查DLL的存在来避免崩溃。

答案 1 :(得分:5)

我认为问题的解决方案由RPUZChris Thornton(两者都已投票)描述。如果将文件提取到硬盘驱动器会给您带来麻烦,您应该知道可以直接从内存加载DLL。

Zarko Gajic在delphi.about.com解释。

答案 2 :(得分:3)

如果你解压缩DLL,你把它放在哪里?您的应用程序不是具有特殊权限的安装应用程序(setup.exe),因此无法在Vista / Windows7下写入\ windows \ system32甚至\ program files \ yourapp。尝试将其放入程序目录将导致它通过VirtualStore位于其他位置。因此,您必须在尝试LoadLibrary()之前验证FileExists('bass.dll')。