无法从 C# 运行 C++ clr dll - Dll 已卸载

本文关键字:dll Dll 卸载 clr C++ 运行 | 更新日期: 2023-09-27 18:31:56

我见过几个人有类似的问题,但到目前为止,这些修复都没有奏效。

有一个C#应用程序(Windows表单)和/我正在尝试使用C++clr dll。 dll 似乎加载正常,我可以构建并运行应用程序,但是如果我调用 dll,程序会抛出 FileNotFound 异常"无法加载文件或程序集'MyLibrary.dll'或其依赖项之一。找不到指定的模块:"我的库.dll"。

最后一个错误是 1008,Error_No_Token

dll 位于包含 exe 的文件夹中。

我一直在用 peverify 和 ildasm 检查事情,但没有发现任何问题。

我在它上运行了依赖步行者,并在日志中看到这个不寻常的序列:

在地址0x00007FFB93400000卸载"MYLIBRARY.DLL"。

LoadLibraryExW("C:''source''tools''ToolItemProj''ToolItem''ToolItem''bin''x64''Debug''MyLibrary.dll", 0x0000000000000000, LOAD_WITH_ALTERED_SEARCH_PATH) 返回 NULL。错误:找不到指定的模块 (126)。

我已经在它上运行了ProcMon并提出了几个完整的,其中大多数都成功了,但是QueryAllInformation有一个BufferOverflow错误,并且CreateFileMapping失败(一次)与FileLockedWithOnlyReader(然后它再次运行并成功)。 创建INI似乎也因NameNotFound而失败。

因此,由于

缓冲区溢出,它看起来像是在运行时卸载dll。 但是,我该如何追踪它? 有人有这方面的经验吗?

无法从 C# 运行 C++ clr dll - Dll 已卸载

这个问题已经解决了。 dll 包括另一个我没有的 dll。 我能够通过原始开发人员跟踪此dll。