2

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

我使用的 binding.gyp 文件基于 Github 上的NUIMotion文件,它正在做类似的事情。这是我的:

{
    "targets": [
    {
        "target_name": "onijs",
        "sources": [
            "src/main.cpp" ],
        "include_dirs": [ "./src/Include" ],

        "libraries": [ "-lOpenNI2", "-Wl,-rpath ./" ]
    }
  ]
}

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

  • 创建了一个名为的节点项目文件夹onijs/
  • 下载并解压 OpenNI
  • 将目录的内容复制Redistonijs/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”。

我在这里采取了错误的方法吗?我已经在库声明中没有-land的情况下尝试过,-Wl, -rpath ./但它仍然没有构建。

4

1 回答 1

0

几个快速选项

如果 OpenNI2 是单个动态库,您可以直接添加到库列表

/path/to/libOpenNI2_file

如果 OpenNI2 是软件包的一部分,您可以使用 pkg-config 来获取库

pkg-config --libs OpenNI2

在OpenNI上有更多关于这个特定库的文档

于 2013-10-30T20:34:10.257 回答