【问题标题】:DEP preventing my COM DLL from workingDEP 阻止我的 COM DLL 工作
【发布时间】:2011-09-21 15:00:50
【问题描述】:

我正在尝试在我的 Delphi 7 IntraWeb 应用程序中使用 COM DLL(用 Delphi 7 编写),但由于 DEP 而失败。我几乎可以肯定是 DEP 阻止了我使用 DLL,因为如果我将 IntraWeb 应用程序作为独立服务器编译并运行,一切正常。但是,将其作为 ISAPI DLL 编译并运行,它会失败。

在 WinXP(使用 IIS 6)上,我可以将 DllHost.exe 添加到 DEP 并且一切正常。当然,我真的不想这样做。在 Win7/2008 (IIS 7) 上,这不是一个选项。

当从 IntraWeb ISAPI DLL 调用时,有人可以指出一个可以帮助我让我的 COM DLL 工作的方向吗?

我需要对 COM DLL 做些什么吗?我可以在某处添加任何权限吗?

谢谢, 迈克尔

【问题讨论】:

  • DEP 通常确实表明您存在内存访问错误。修复该问题,无需修改 DEP。
  • 看看this QC report中提到的the fix是否有帮助。
  • 感谢您的建议,但都没有成功。我什至创建了一个新的 Intraweb 应用程序,只需单击一个按钮即可尝试连接到 DLL,但它也失败了。我什至绕过了 DLL,直接进入了 Web 服务(DLL 所做的),但也失败了。同样,编译为独立服务器也能完美运行。

标签: delphi com delphi-7 intraweb


【解决方案1】:

我会将 dll 托管在本地可执行文件中,调用方法直到崩溃发生。您可以在自己的机器上启用 DEP 来执行此操作。

不幸的是,Delphi 7 本身在启用数据执行保护的情况下崩溃,此外还有 TOndrej 提到的 RTL/VCL 中的内存违规。

这就是让您的 COM dll 与 DEP 一起工作所需要做的事情 - 找到错误并修复它们。

【讨论】:

    猜你喜欢
    • 2010-10-14
    • 2012-02-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-08
    • 2011-02-23
    相关资源
    最近更新 更多