【问题标题】:Exception loading CEFSHARP.CORE.DLL加载 CEFSHARP.CORE.DLL 的异常
【发布时间】: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


【解决方案1】:

CefSharp 是使用 VC++ 2012 Update 4 构建的。请注意 x86x64 的变体,因此根据您的应用程序确保它们匹配。

https://www.microsoft.com/en-us/download/details.aspx?id=30679

在对CefSharp 进行故障排除时,可以从一些地方开始

【讨论】:

    【解决方案2】:

    对于仍在寻找此问题的解决方案的任何人,如果您使用的是 55 版以下的 CefSharp,请下载并安装 Visual C++ 2012,如果您使用的是 CefSharp 57 版,请下载并安装 Visual C++ 2013。请确保根据您的应用程序目标架构(构建)安装 VC++ 构建(x86 或 x64)。我花了一天半的时间才意识到这一点。

    看看这个:https://github.com/cefsharp/CefSharp/wiki/Frequently-asked-questions#Runtime_dependencies

    【讨论】:

    • 如果您解释该链接的上下文,即使只是复制和粘贴相关内容,如果链接发生变化,它将更加有用:)
    • 版本 43 是最后一个使用 VS 2012 的版本,较新的分支使用 2013。
    【解决方案3】:

    我通过安装以下可再发行组件解决了这个问题:

    Visual Studio C++ 2015 14.24.28127,它包含库中必不可少的核心功能。

    【讨论】:

      猜你喜欢
      • 2018-04-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多