如何从资源中提取DLL

XBa*_*000 0 delphi dll extraction

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

RRU*_*RUZ 5

XBasic3000,我认为你的问题可能是你正在使用这样的外部声明

function Foo: integer; stdcall; external 'bass.dll';
Run Code Online (Sandbox Code Playgroud)

因此OS无法解析dll中函数的地址.

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

  • 如果您使用D2010中引入的新"延迟"功能,它会为您处理LoadLibrary()和GetProcAddress(). (2认同)

Jør*_*eit 5

我认为你的问题的解决方案是由RPUZ克里斯桑(两人都投票)描述的.如果将文件解压缩到硬盘驱动器会导致问题,您应该知道可以直接从内存加载DLL.

Zarko Gajic在delphi.about.com上解释.