首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从资源中提取dll

如何从资源中提取dll
EN

Stack Overflow用户
提问于 2010-08-11 13:17:44
回答 3查看 877关注 0票数 0

我的应用程序使用Bass.dll,我将其添加到资源中。我希望在应用程序启动chrash之前将其解压缩。如何将其作废?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-08-11 13:26:51

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

代码语言:javascript
复制
function Foo: integer; stdcall; external 'bass.dll';

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

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

票数 5
EN

Stack Overflow用户

发布于 2010-08-12 21:46:56

我认为你的问题的解决方案是由RPUZChris Thornton描述的(两者都得到了提升)。如果将文件解压缩到硬盘上会给您带来麻烦,您应该知道可以直接从内存加载DLL。

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

票数 5
EN

Stack Overflow用户

发布于 2010-08-11 20:41:50

如果你提取DLL,你会把它放在哪里?你的应用程序不是具有特殊权限的安装应用程序(setup.exe),因此它不能写入\windows\system32,甚至不能写入Vista/windows 7下的\program files\yourapp。试图将其放入程序目录将导致它通过VirtualStore被定位到其他地方。因此,您必须在尝试LoadLibrary()之前验证FileExists('bass.dll')。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3455468

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档