dll动态链接库怎么修复 加载dll失败

【dll动态链接库怎么修复 加载dll失败】短答案
因为我们测试过其他方案,只有这种方式是最好的 。
长答案
在16位Windows系统上,如果一个模块不满足它的所有导入表,它仍然可以被系统加载 。只要不叫失踪进口,一切还是正常的 。如果试图调用缺失的导入项,程序会立即崩溃,并显示“不可恢复的错误”对话框提示 。
在Win32时代,开发团队认为这是一个糟糕的设计,因为有时人们会将一个为Windows 3.1开发的应用程序复制到Windows 3.0并运行它 。起初,应用程序运行良好,但如果应用程序调用了只在Windows 3.1平台上可用的函数(例如,函数get savefile),应用程序将立即崩溃 。
因此,Win32开发小组决定,如果任何导入项未能成功解析,应用程序将在首次加载时失败 。如果上面示例中的应用程序开发人员希望在Windows 3.0上运行他们的应用程序,他们可以通过显式使用GetProcAddress来明确这一点 。因为如果必须显式调用GetProcAddress,可能需要检查返回值 。
当人们大声呼喊的时候,这个问题有时会出现:“天啊,我应该有办法把导入项标记为‘可选’——如果不能绑定,加载应该不会失败 。在调用绑定之前,验证绑定是否成功是应用程序的责任 。,这些人可能是在不经意间要求历史重演,因为这会回到我们当初遇到问题的地方 。
总结
如果对当前平台上是否有函数调用有疑问,可以先尝试用GetProcAddress获取函数地址 。如果该功能不可用,你应该给出相应的提示或错误处理,从而使你的应用程序尽可能优雅地退出 。

dll动态链接库怎么修复 加载dll失败

文章插图
文章插图