我正在尝试构建一个使用 OpenNI 的 Node.js 插件。我之前没有使用过 Node-gyp,所以我尝试设置 binding.gyp 文件,以便它包含 OpenNI 库作为构建的一部分。我实际编译的代码只是 Hello World example .
我正在使用的 binding.gyp 文件基于 NUIMotion 中的文件。在 Github 上,它正在做类似的事情。这是我的:
{
"targets": [
{
"target_name": "onijs",
"sources": [
"src/main.cpp" ],
"include_dirs": [ "./src/Include" ],
"libraries": [ "-lOpenNI2", "-Wl,-rpath ./" ]
}
]
}
这是我所做的(在 OSX 中工作):
- 创建了一个名为
onijs/
的 Node 项目文件夹 - 下载并解压 OpenNI
- 将
Redist
目录的内容复制到onijs/
(Redist
有一个目录OpenNI2
所以现在我有onijs/OpenNI2
和一些驱动程序。 - 将
Includes
文件夹复制到onijs/src/
- 将基本的“Hello World”复制到
onijs/src/main.cpp
- 将我的
binding.gyp
文件放在onijs/
中 - 在终端中,我执行了
cd/pathTo/onijs/
并运行了node-gyp configure
,效果很好 - 然后我运行了
node-gyp build
,它吐了。
错误是“ld: library not found for -lOpenNI2.”
我是不是采取了错误的方法?我已经在库声明中没有 -l
和 -Wl, -rpath ./
的情况下进行了尝试,但它仍然无法构建。
最佳答案
几个快速选项
如果 OpenNI2 是一个单独的动态库,您可以直接添加到您的库列表中
/path/to/libOpenNI2_file
如果 OpenNI2 是包的一部分,您可以使用 pkg-config 来获取库
pkg-config --libs OpenNI2
这里有关于这个特定库的更多文档 OpenNI
关于c++ - 应该如何编写 binding.gyp 以使用 OpenNI 构建 Node.js 插件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16737863/