我的应用程序使用Bass.dll,我将其添加到资源中。我希望在应用程序启动chrash之前将其解压缩。如何将其作废?
发布于 2010-08-11 13:26:51
XBasic3000,我认为您的问题在于您可能正在使用像这样的外部声明
function Foo: integer; stdcall; external 'bass.dll';因此,操作系统无法解析dll中函数的地址。
相反,您必须在提取DLL之后使用LoadLibrary()和GetProcAddress()函数,这样您就可以通过检查DLL是否存在来避免崩溃。
发布于 2010-08-12 21:46:56
我认为你的问题的解决方案是由RPUZ或Chris Thornton描述的(两者都得到了提升)。如果将文件解压缩到硬盘上会给您带来麻烦,您应该知道可以直接从内存加载DLL。
Zarko Gajic在delphi.about.com上解释说。
发布于 2010-08-11 20:41:50
如果你提取DLL,你会把它放在哪里?你的应用程序不是具有特殊权限的安装应用程序(setup.exe),因此它不能写入\windows\system32,甚至不能写入Vista/windows 7下的\program files\yourapp。试图将其放入程序目录将导致它通过VirtualStore被定位到其他地方。因此,您必须在尝试LoadLibrary()之前验证FileExists('bass.dll')。
https://stackoverflow.com/questions/3455468
复制相似问题