gpt4 book ai didi

c++ - Electron native 添加 : DLL initialization routine failed

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:43:28 24 4
gpt4 key购买 nike

我正在尝试将我的 C++ 库作为 native 附加组件链接到我的 Electron 应用程序。我能够运行 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
},
},
},
},
},],
}

有什么问题吗?如果需要更多信息,请告诉我。

最佳答案

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

x64 与 x86

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

依赖dll

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

看起来您使用的是 Windows,因此尝试使用此工具打开您的 dll 并查看其依赖项是什么 depends.exe

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

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

版本

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

如果您需要更多详细信息,我可以详细说明这些主题中的任何一个。

关于c++ - Electron native 添加 : DLL initialization routine failed,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34505670/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com