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

时间:2016-01-26 19:43:47

标签: c# c++ dll

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

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

最后一个错误是1008,Error_No_Token

dll位于exe文件夹中。

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

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

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

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

我已经运行了ProcMon并提出了几个entires,其中大多数都成功了,但是QueryAllInformation有一个BufferOverflow错误,而CreateFileMapping失败(一次)与FileLockedWithOnlyReaders(然后再次运行并成功)。使用NameNotFound创建INI似乎也失败了。

因此,由于缓冲区溢出,它似乎在运行时卸载了dll。但是,我该如何追踪呢?有没有人有这方面的经验?

1 个答案:

答案 0 :(得分:-1)

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