【问题标题】:debugging asp.net & pinvoke调试 asp.net 和 pinvoke
【发布时间】:2011-02-27 21:58:00
【问题描述】:

我知道您需要打开“本机代码”调试器才能进入 pinvoke 的 dll,但我什至没有达到这一点。相反,当我尝试进入 dll 时,我得到了以下异常

“无法加载 DLL 'Native.dll':找不到指定的模块。(来自 HRESULT 的异常:0x8007007E)”

如果我检查我的模块,我会发现我所在的当前 .Net dll 位于: C:\Windows\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\project\c4e2b8a9\1234a123\assembly\d12\de123456\12345678_0304cb01\dotnet.dll

因此,我没有找到我的 pinvoked dll 是有道理的,因为它在此路径中不存在。我怎样才能做到这一点,以便当我的代码从“临时 ASP.Net 文件”位置运行时,它会看到我的 pinvoked dll? (没有硬编码路径)。

目前我的声明如下:

    [DllImport("Native.dll")]
    public static extern int RunTest();

编辑:

我发现了一个类似的问题,并提出了一些很好的建议。 Unmanaged DLLs fail to load on ASP.NET server

【问题讨论】:

  • 尝试放到Windows或system32目录下。

标签: asp.net iis pinvoke


【解决方案1】:

为了让 pinvoke 找到 dll,该 dll 必须位于 .net dll 附近或 PATH 变量中的目录之一中。您可以将应用程序的路径动态添加到 PATH 环境中。 process 使用 Environment 类的变量。但是您仍然需要在运行时知道应用程序的路径。

【讨论】:

    猜你喜欢
    • 2011-05-08
    • 2011-09-15
    • 1970-01-01
    • 1970-01-01
    • 2011-08-23
    • 2013-08-15
    • 2011-07-04
    • 1970-01-01
    • 2012-01-07
    相关资源
    最近更新 更多