我的应用程序使用Bass.dll并将其添加到资源中。我想在应用程序启动之前将其解压缩。如何取消它?
答案 0 :(得分:5)
XBasic3000,我认为您的问题可能就是使用这样的外部声明
function Foo: integer; stdcall; external 'bass.dll';
因此操作系统无法解析dll中函数的地址。
而是在提取DLL后必须使用LoadLibrary()和GetProcAddress()函数,这样可以通过检查DLL的存在来避免崩溃。
答案 1 :(得分:5)
我认为问题的解决方案由RPUZ或Chris Thornton(两者都已投票)描述。如果将文件提取到硬盘驱动器会给您带来麻烦,您应该知道可以直接从内存加载DLL。
Zarko Gajic在delphi.about.com解释。
答案 2 :(得分:3)
如果你解压缩DLL,你把它放在哪里?您的应用程序不是具有特殊权限的安装应用程序(setup.exe),因此无法在Vista / Windows7下写入\ windows \ system32甚至\ program files \ yourapp。尝试将其放入程序目录将导致它通过VirtualStore位于其他位置。因此,您必须在尝试LoadLibrary()之前验证FileExists('bass.dll')。