我目前正在开发一个用于 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 进行构建过程。