我見過幾個有類似問題的人,但到目前爲止,沒有任何修復工作。我有一個C#應用程序(Windows窗體)和/我想要使用C + + clr dll。 DLL似乎加載得很好,我可以構建和運行應用程序,但是如果我調用dll程序會拋出FileNotFound異常「無法加載文件或程序集」MyLibrary.dll「或它的某個依賴項。未找到。「:」MyLibrary.dll「。無法從C#運行C++ clr dll - Dll Unloaded?
的最後一個錯誤是1008,ERROR_NO_TOKEN
該DLL與EXE的文件夾中。
我一直在用peverify和ildasm來檢查事情,但沒有發現任何問題。
我跑的Dependency Walker就可以看到在日誌這個不尋常的序列:
地址0x00007FFB93400000卸載「MYLIBRARY.DLL」。 LoadLibraryExW(「C:\ source \ tools \ ToolItemProj \ ToolItem \ ToolItem \ bin \ x64 \ Debug \ MyLibrary.dll」,0x0000000000000000,LOAD_WITH_ALTERED_SEARCH_PATH)返回NULL。錯誤:指定的模塊找不到(126)。我已經運行了ProcMon並且拿出了幾個entires,其中大部分都成功了,但QuerryAllInformation有一個BufferOverflow錯誤,並且CreateFileMapping失敗(一次)使用FileLockedWithOnlyReaders(然後再次運行併成功運行)。使用NameNotFound創建一個INI似乎也失敗了。
因此,它看起來像是因爲緩衝區溢出而在運行時卸載dll。但是,我如何追蹤它?有人對此有經驗嗎?
通常「找不到指定的模塊」暗示某些dll丟失。你的vcredist(x64)是否正確安裝? C++ dll是否依賴於任何你可能忘記放在你的程序集目錄或搜索路徑下的東西?此外,是C++ DLL編譯在X64? – evertqin