【发布时间】:2020-06-21 12:50:16
【问题描述】:
我目前正在开发一个用于 Node.Js 和 Electron 的本机节点模块,它需要额外的 dll 才能工作(以及 Linux 和 Mac 上的任何等价物)。 我不是真正的 C++ 开发,我没有在互联网上找到这个问题的解决方案,所以我可能需要你的一些支持:)
因此,当所有内容都存储在同一个(工作)目录中时,它工作得很好,但这不是你可以长期使用的东西。 特别是当我将所有内容打包到一个可以用 NPM 加载的模块中时,带有它的 dll 的模块存储在一个子文件夹中,如“./node_modules/native-module/build/Release/adddon.node[或 dll]”。
我可以轻松地使用 require 包含模块,但它不再找到任何 dll,因为如果我正确理解 C++ 行为,它只会在 PATH 和当前工作目录中查找(这是 Electron 或 Node.js 所在的位置)执行)用于 dll。
我的第一个解决方法是将 cwd 更改为所有 dll 所在的“Release”文件夹。 但是当你喜欢使用 webpack 的热重载功能时,更改 cwd 会变得非常混乱,我将其用于开发目的。 您总是必须检查 cwd 是否已经更改,它不再正确显示页面,我真的认为这不是这样做的方法。
所以我的问题是动态告诉节点模块 dll 存储在哪里的正确方法是什么? 提前致谢。
PS:如果这很重要,我将使用 cmake-js 进行构建过程。
【问题讨论】:
标签: javascript c++ node.js dll node-native-addon