嵌入 Chakra JavaScript 引擎无法初始化 COM 接口

Embedding Chakra javascript engine failed to initialize COM interfaces

本文关键字:初始化 COM 接口 Chakra JavaScript 引擎 嵌入      更新时间:2023-09-26

我刚刚编译了ChakraCore并运行了Hello World Sample。

当我构建ChakraCore时,没有发现任何错误。

但是当我运行HelloWorld sampl System.Runtime.InetropServices.SEHException发生在ChakraHost.Hosting.Native.JsCreateContext(JavaScriptRuntime runtime,JavaScriptContext&newContext)时。

它说外部组件引发了异常。

所以我启用了本机代码调试,发现 ChakraCore 中的断言失败和断言消息如下所示。

断言Msg(false,"无法初始化 COM 接口,验证是否使用了正确版本的全球化 dll。

然后我搜索了system.globalization.dll文件,并在多个文件夹中找到了该文件。

我把它复制到C:''windows''SysWOW64中,然后运行regsvr32 system.globalization.dll。

我从跑步中得到了下面的消息。

模块"system.globalization.dll"已加载,但找不到入口点DllRegisterServer。确保"system.globalization.dll"是有效的DLL或OCS文件,然后重试。

我不知道现在该怎么办。我花了几个小时来解决这个问题。

谁能帮我弄清楚这一点?

谢谢

这是我为使其工作所做的。

  1. 从Visual Studio 2015构建ChakraCore。我使用了调试和x64
  2. 复制ChakraCore/Build/VcBuild/bin/x64_debug。ChakraCore.dll to Chakra-Samples''ChakraCore Samples''Hello World''C#''HelloWorld''bin
  3. 转到 HelloWorld 解决方案属性并将平台目标设置为 x64
  4. 在 HelloWorld 按 F5 的主方法中添加断点。

就我而言,失败的行始终是:

// Create a runtime. 
Native.JsCreateRuntime(JavaScriptRuntimeAttributes.None, null, out runtime);

执行上述操作后,我将运行 HelloWorld 示例。

希望这有帮助。