【发布时间】:2015-04-24 09:03:51
【问题描述】:
在我们的一些机器上,当我们尝试从 WPF 代码启动 CefBrowser 时出现异常。我一直在尝试解决此问题,但无法真正理解出了什么问题。机器都是Win7,运行64位操作系统。
下面,我使用运行“CefSharp.MinimalExample.Wpf.exe”的“Dependency Walker”捕获了跟踪。 (我为格式道歉,我不知道如何改进它。)
它开始,然后变成带有标准文本“无法加载文件或程序集'CefSharp.Core.dll'或其依赖项之一。找不到指定的模块。”的应用程序崩溃。
那么 - 有谁知道下一步该做什么?我真的猜不出来!
来自依赖的日志文件
> Loaded "RPCRTREMOTE.DLL" at address 0x000007FEFDCE0000. Successfully hooked module.
DllMain(0x000007FEFDCE0000, DLL_PROCESS_ATTACH, 0x0000000000000000) in "RPCRTREMOTE.DLL" called.
DllMain(0x000007FEFDCE0000, DLL_PROCESS_ATTACH, 0x0000000000000000) in "RPCRTREMOTE.DLL" returned 1 (0x1).
LoadLibraryExW("f:\public\dsu\debug\CefSharp.Core.dll", 0x0000000000000000, LOAD_WITH_ALTERED_SEARCH_PATH) called from "CLR.DLL" at address 0x000007FEE80DDB40.
Loaded "CEFSHARP.CORE.DLL" at address 0x000007FEE2DA0000. Successfully hooked module.
Unloaded "CEFSHARP.CORE.DLL" at address 0x000007FEE2DA0000.
LoadLibraryExW("f:\public\dsu\debug\CefSharp.Core.dll", 0x0000000000000000, LOAD_WITH_ALTERED_SEARCH_PATH) returned NULL. Error: The specified module could not be found (126).
GetProcAddress(0x0000000077300000 [KERNEL32.DLL], "LCIDToLocaleName") called from "CLR.DLL" at address 0x000007FEE80FDCE7 and returned 0x0000000077308680.
GetProcAddress(0x0000000077300000 [KERNEL32.DLL], "GetLocaleInfoEx") called from "CLR.DLL" at address 0x000007FEE80FDCE7 and returned 0x00000000773035E0.
LoadLibraryExW("C:\Windows\Microsoft.NET\Framework64\v4.0.30319\en-US\mscorrc.dll", 0x0000000000000000, LOAD_LIBRARY_AS_DATAFILE) called from "CLR.DLL" at address 0x000007FEE81652C4.
LoadLibraryExW("C:\Windows\Microsoft.NET\Framework64\v4.0.30319\en-US\mscorrc.dll", 0x0000000000000000, LOAD_LIBRARY_AS_DATAFILE) returned NULL. Error: The system cannot find the file specified (2).
LoadLibraryExW("C:\Windows\Microsoft.NET\Framework64\v4.0.30319\en\mscorrc.dll", 0x0000000000000000, LOAD_LIBRARY_AS_DATAFILE) called from "CLR.DLL" at address 0x000007FEE81652C4.
LoadLibraryExW("C:\Windows\Microsoft.NET\Framework64\v4.0.30319\en\mscorrc.dll", 0x0000000000000000, LOAD_LIBRARY_AS_DATAFILE) returned NULL. Error: The system cannot find the file specified (2).
LoadLibraryExW("C:\Windows\Microsoft.NET\Framework64\v4.0.30319\mscorrc.dll", 0x0000000000000000, LOAD_LIBRARY_AS_DATAFILE) called from "CLR.DLL" at address 0x000007FEE81652C4.
Mapped "MSCORRC.DLL" as a data file into memory at address 0x0000000000590001.
LoadLibraryExW("C:\Windows\Microsoft.NET\Framework64\v4.0.30319\mscorrc.dll", 0x0000000000000000, LOAD_LIBRARY_AS_DATAFILE) returned 0x0000000000590001.
GetProcAddress(0x0000000077300000 [KERNEL32.DLL], "LocaleNameToLCID") called from "CLR.DLL" at address 0x000007FEE80FDCE7 and returned 0x0000000077304FA0.
GetProcAddress(0x0000000077300000 [KERNEL32.DLL], "GetUserDefaultLocaleName") called from "CLR.DLL" at address 0x000007FEE8202730 and returned 0x000000007734BB80.
GetProcAddress(0x0000000077300000 [KERNEL32.DLL], "GetUserPreferredUILanguages") called from "CLR.DLL" at address 0x000007FEE82026F5 and returned 0x000000007734BB70.
LoadLibraryExW("C:\Windows\Microsoft.NET\Framework64\v4.0.30319\VERSION.dll", 0x0000000000000000, LOAD_WITH_ALTERED_SEARCH_PATH) called from "CLR.DLL" at address 0x000007FEE80DDB40.
LoadLibraryExW("C:\Windows\Microsoft.NET\Framework64\v4.0.30319\VERSION.dll", 0x0000000000000000, LOAD_WITH_ALTERED_SEARCH_PATH) returned NULL. Error: The specified module could not be found (126).
LoadLibraryExA("VERSION.dll", 0x0000000000000000, 0x00000000) called from "CLR.DLL" at address 0x000007FEE81226AC.
Loaded "VERSION.DLL" at address 0x000007FEFCE30000. Successfully hooked module.
DllMain(0x000007FEFCE30000, DLL_PROCESS_ATTACH, 0x0000000000000000) in "VERSION.DLL" called.
DllMain(0x000007FEFCE30000, DLL_PROCESS_ATTACH, 0x0000000000000000) in "VERSION.DLL" returned 1 (0x1).
LoadLibraryExA("VERSION.dll", 0x0000000000000000, 0x00000000) returned 0x000007FEFCE30000.
GetProcAddress(0x000007FEFCE30000 [VERSION.DLL], "GetFileVersionInfoSizeW") called from "CLR.DLL" at address 0x000007FEE80E8131 and returned 0x000007FEFCE315FC.
LoadLibraryExW("CEFSHARP.MINIMALEXAMPLE.WPF.EXE", 0x0000000000000000, LOAD_LIBRARY_AS_DATAFILE | 0x00000020) called from "VERSION.DLL" at address 0x000007FEFCE31523.
...
Mapped "CEFSHARP.MINIMALEXAMPLE.WPF.EXE" as a data file into memory at address 0x000000013F400000.
LoadLibraryExW("f:\public\dsu\debug\CEFSHARP.MINIMALEXAMPLE.WPF.EXE", 0x0000000000000000, LOAD_LIBRARY_AS_DATAFILE | 0x00000020) returned 0x000000013F400000.
GetProcAddress(0x0000000077300000 [KERNEL32.DLL], "GetThreadErrorMode") called from "CLR.DLL" at address 0x000007FEE84A9C64 and returned 0x0000000077365620.
GetProcAddress(0x0000000077300000 [KERNEL32.DLL], "SetThreadErrorMode") called from "CLR.DLL" at address 0x000007FEE84A9C77 and returned 0x0000000077365660.
LoadLibraryExW("C:\Windows\Microsoft.NET\Framework64\v4.0.30319\diasymreader.dll", 0x0000000000000000, LOAD_WITH_ALTERED_SEARCH_PATH) called from "CLR.DLL" at address 0x000007FEE816BC48.
Loaded "DIASYMREADER.DLL" at address 0x000007FEE2C90000. Successfully hooked module.
DllMain(0x000007FEE2C90000, DLL_PROCESS_ATTACH, 0x0000000000000000) in "DIASYMREADER.DLL" called.
DllMain(0x000007FEE2C90000, DLL_PROCESS_ATTACH, 0x0000000000000000) in "DIASYMREADER.DLL" returned 1 (0x1).
LoadLibraryExW("C:\Windows\Microsoft.NET\Framework64\v4.0.30319\diasymreader.dll", 0x0000000000000000, LOAD_WITH_ALTERED_SEARCH_PATH) returned 0x000007FEE2C90000.
GetProcAddress(0x000007FEE2C90000 [DIASYMREADER.DLL], "DllGetClassObject") called from "CLR.DLL" at address 0x000007FEE816BC79 and returned 0x000007FEE2CA090C.
Second chance exception 0xE0434352 (Unknown) occurred in "KERNELBASE.DLL" at address 0x000007FEFE03AAAD.
Exited "CEFSHARP.MINIMALEXAMPLE.WPF.EXE" (process 0x18D4) with code -532462766 (0xE0434352).
【问题讨论】:
-
您忘记复制cefsharp 需要的DLL。可能是 CRT,它往往是偶然可用的。使用 SysInternals 的 Process Monitor,您会看到您的程序正在搜索 DLL 而没有找到它。如果它是 CRT,那么它的名称将类似于 msvcr100.dll
-
ProcMon 显示缺少两个 MSVC 文件:msvcp110.dll 和 msvcr110.dll。将这些文件复制到输出后,它就可以工作了。非常感谢!
标签: c# .net wpf windows-7-x64 cefsharp