【问题标题】:Electron native add on : DLL initialization routine failed电子本机插件:DLL 初始化例程失败
【发布时间】:2017-03-14 21:25:06
【问题描述】:

我正在尝试将我的 C++ 库作为本机插件链接到我的电子应用程序。 我能够运行 node-gyp rebuild 并生成成功的 .node 文件。

但是,当我尝试从 main.js 调用它时,我收到一条错误消息:“动态链接库 (DLL) 初始化例程失败”。

我的 binding.gyp 文件如下所示:

{
    'targets': [
    {
        # Usual target name/sources, etc.
        'target_name': 'myclass',
        'sources': [ 'myclass.cc', 'addon.cc' ],
        'libraries': ["../libs/api.lib",
                      "../libs/core.lib",
                      "../libs/camera.lib",
                      "../libs/algo.lib",
                      "../libs/ComCtl32.lib",
                      "../../deps/windows/opencv/lib/x64/*.lib",
                      "../../deps/windows/tbb/lib/x64/*.lib"],
        'include_dirs': ["<!(node -e \"require('nan')\")"],

        'configurations': {
            'Debug': {
                'msvs_settings': {
                            'VCCLCompilerTool': {
                                'RuntimeLibrary': '3' # /MDd
                    },
                },
            },
            'Release': {
                'msvs_settings': {
                            'VCCLCompilerTool': {
                                'RuntimeLibrary': '2' # /MD
                    },
                },
            },
        },
    },],
}

可能出了什么问题?如果需要更多信息,请告诉我。

【问题讨论】:

    标签: c++ node.js dynamic-linking electron node-gyp


    【解决方案1】:

    有些事情可能会出错......

    x64 与 x86

    您需要确保正确获取 x86 v x64 二进制文件。例如,x64 二进制文件只能在 x64 版本的节点上运行。我看到您直接链接到一些 x64 库,您可能需要根据您的目标架构有条件地链接到正确的库。然后确保您获得了正确版本的电子。

    依赖的dll

    确保您所依赖的 dll 位于正确的位置。基本上它们应该在同一目录中或尝试加载 dll 的 exe 旁边。

    看起来你使用的是windows,所以试着用这个工具打开你的dll,看看它的依赖是什么depends.exe

    需要注意的是,当您使用 node-gyp 进行重建时,dll 现在只能在电子中打开,您必须做一些魔术才能使其也从命令行加载到节点中,而无需进一步重新编译。

    您实际上是如何尝试加载 dll 的?

    版本

    您必须拥有 exact 正确版本的 node、electron 和 node-gyp。对它们进行三次检查。

    如果您需要更多详细信息,我可以详细说明这些主题。

    【讨论】:

      【解决方案2】:

      npm install -g prebuild

      cd node_modules/ffi prebuild -t 1.3.1 -r electron

      cd node_modules/ref prebuild -t 1.3.1 -r electron

      '1.3.1' 是电子版本

      【讨论】:

        猜你喜欢
        • 2016-07-01
        • 1970-01-01
        • 2019-05-07
        • 1970-01-01
        • 1970-01-01
        • 2019-12-11
        • 1970-01-01
        • 1970-01-01
        • 2021-09-14
        相关资源
        最近更新 更多