应该如何绑定.用OpenNI编写一个Node.js插件

How should binding.gyp be written to build a Node.js addon with OpenNI?

本文关键字:插件 一个 Node js 何绑定 绑定 OpenNI      更新时间:2023-10-16

我正在尝试构建一个使用OpenNI的Node.js插件。我以前没有使用过Node-gyp,所以我正在尝试设置绑定。它包含OpenNI库作为构建的一部分。我实际编译的代码只是Hello World示例。

绑定。我使用的gyp文件是基于NUIMotion在Github上的一个,它正在做类似的事情。我:

{
    "targets": [
    {
        "target_name": "onijs",
        "sources": [
            "src/main.cpp" ],
        "include_dirs": [ "./src/Include" ],
        "libraries": [ "-lOpenNI2", "-Wl,-rpath ./" ]
    }
  ]
}

这是我所做的(在OSX中工作):

  • 创建一个名为onijs/
  • 的节点项目文件夹
  • 下载并解压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中有关于这个特定库的更多文档