【问题标题】:Native loading works good. Loading from .net gives error Unable to load DLL 'my.dll': Invalid access to memory location本机加载效果很好。从 .net 加载会出现错误无法加载 DLL 'my.dll': Invalid access to memory location
【发布时间】:2011-03-21 09:17:57
【问题描述】:

我正在尝试使用本机 dll,使用 DllImport。 我收到这样的错误。

System.DllNotFoundException:无法加载 DLL“my.dll”:对内存位置的访问无效。 (HRESULT 异常:0x800703E6)

当从本机代码调用 时,该 dll 正常 加载(它在 delphi 应用程序中使用)。 但是当我从 .net 代码中调用它时,它给了我上面的异常。

我已阅读此链接 Windows Vista: Unable to load DLL 'x.dll': Invalid access to memory location. (DllNotFoundException),但没有任何解决方案有帮助。

DEP,管理权限不是这样的。

附:这种情况发生在 Windows 2008 服务器上。在 Win 2003 Server 和 XP 上一切正常。

【问题讨论】:

  • 当您从 Win2008 服务器上的 Delphi 应用程序加载它时会发生什么? 2008服务器是64位的吗?你的目标是 AnyCPU 还是 x86?
  • 一切正常,当我从delphi加载它时。没有错误。
  • 还有关于64bit、AnyCPU等的问题?
  • 2) 服务器 2008 - 32 位。 3) x86
  • 假设 DLL 是 Delphi DLL,请尝试从您的某些单元初始化部分发出一些调试信息,以查看 DLL 初始化完成的程度。

标签: .net dllimport dllnotfoundexception


【解决方案1】:

看来我找到了问题所在。 问题出在 DEP 功能中。 当我只为基本程序打开 DEP 时,它没有任何效果。 但是当我完全关闭 DEP 并重新启动我的服务器时,错误就消失了。 我已经完成的另一件事 - 为 .net 4.0 安装了最新更新

【讨论】:

  • 还有一件事。 .net 应用程序未指定这是 DEP 错误。我仅在从自己编写的测试本机应用程序调用此 dll 时才观察到它。但是为什么 delphi 本机应用程序没有这个错误 - 它仍然是个谜。
猜你喜欢
  • 2023-01-20
  • 1970-01-01
  • 1970-01-01
  • 2017-04-29
  • 1970-01-01
  • 2016-09-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多