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

时间:2016-01-19 22:43:46

标签: javascript c# c++ dll com

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

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

但是当我运行HelloWorld时,在 ChakraHost.Hosting.Native.JsCreateContext(JavaScriptRuntime运行时,JavaScriptContext& newContext)中出现了System.Runtime.InetropServices.SEHException。

它说外部组件抛出异常。

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

AssertMsg(false,“无法初始化COM接口,验证是否使用了正确版本的全球化DLL。”);

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

我将其复制到C:\ windows \ SysWOW64并运行了regsvr32 system.globalization.dll。

我从跑步中得到了以下信息。

已加载模块“system.globalization.dll”,但未找到入口点DllRegisterServer。 确保“system.globalization.dll”是有效的DLL或OCS文件,然后再试一次。

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

有人能帮我解决这个问题吗?

谢谢,

1 个答案:

答案 0 :(得分:0)

以下是我为使其发挥作用所做的一切。

  1. 从Visual Studio 2015构建ChakraCore。我使用了debug和x64
  2. 将ChakraCore / Build / VcBuild / bin / x64_debug.ChakraCore.dll复制到Chakra-Samples \ ChakraCore Samples \ Hello World \ C#\ HelloWorld \ bin
  3. 转到HelloWorld解决方案属性并将Platform target设置为x64
  4. 在HelloWorld的Main方法中按F5添加断点。
  5. 在我的情况下,失败的行总是:

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

    在采取上述行动后,我将运行HelloWorld示例。

    希望这有帮助。