无法从 C# 运行 C++ clr dll - Dll 已卸载?
Can't run C++ clr dll from C# - Dll Unloaded?
我见过几个人有类似的问题,但到目前为止,这些修复都没有奏效。
我有一个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。 但是,我该如何追踪它? 有人有这方面的经验吗?
这个问题已经解决了。 dll 包括另一个我没有的 dll。 我能够通过原始开发人员跟踪此dll。
- 无法使用加载库卸载注入的 dll (C++)
- std::thread 增加 DLL 引用计数,从而防止卸载 DLL
- 为什么有些延迟加载 DLL 会立即使用 FFMPEG 卸载?
- 如何根据 DLL 端的请求卸载 DLL 模块以卸载它?
- 如何从目标进程卸载 DLL?
- 如何正确卸载DLL本身
- MFC-在dll卸载时,扫描我的代码,任何剩余的计时器,事件,线程等
- ProcessExit- dll卸载和静态的顺序
- 虽然我只做过一次LoadLibrary,但我必须做两次FreeLibrary.此外,在卸载DLL后,当试图再次加载它时,
- 使用boost::signals2并卸载DLL时发生访问冲突
- 线程对象的 WaitForSingleObject 在 DLL 卸载中不起作用
- 在卸载 DLL 期间删除静态对象时退出线程会导致死锁
- 无法从 C# 运行 C++ clr dll - Dll 已卸载?
- C++ DLL 卸载析构函数
- 卸载DLL后,我可以存储在DLL中创建的对象吗
- 在释放静态内存之前已完成卸载DLL
- 从MFC程序卸载dll文件
- 检测dll卸载
- DLL卸载时的内存泄漏
- std::unique_lock<std::mutex> 禁止 DLL 卸载