Node-gyp/C++导入共享库(.so)

Node-gyp/C++ import shared library (.so)

导入共享库 (.so) 似乎不是一件容易的事。我尝试按照此 post, but I really can't get it to work. Building without the library RF24 中的说明进行操作。按照他们的构建说明在 /usr/local/lib 文件夹

中生成了以下文件集
librf24-bcm.so        librf24.so        librf24.so.1     librf24.so.1.3  
librf24.so.1.3.1      node_modules      python2.7        python3.5

在我的 .cpp 文件中,我包含了这样的库

#include <RF24.h> // also tested "" instead of <>

我的binding.gyp看起来像这样

{
  "targets": [
    {
      "includes":     [ "../auto.gypi"               ],
      "sources":      [ "../../src/myfile.cpp"       ],
      "include_dirs": [ "../../src"                  ],
      "library_dirs": [ "/usr/local/lib"             ],
      "libraries":    [ "-llibrf24"                  ],
      "cflags!":      [ "-fno-exceptions"            ],
      "cflags":       [ "-std=c++11", "-fpermissive" ],
      "cflags_cc!":   [ "-fno-rtti"                  ] 
    }
  ],
  "includes": [
    "../auto-top.gypi"
  ]
}

编译错误为

myfile.cpp:2:18: fatal error: RF24.h: No such file or directory

我也尝试使用 libraries 部分中的文件完整名称,例如librf24.so.1.3.1,并且没有 -l 标志。还将 library_dirs 条目切换为 include_dirs。还是一样的错误。

根据这个 article 我能够弄清楚。 RF24 版本还将相应的头文件写入 /user/local/include/RF24.

binding.gyp更新为

"include_dirs": [
  "../../src",
  "/usr/local/include/RF24"
],
"libraries": [
  "/usr/local/lib/librf24.so.1.3.1"
]

至少插件编译没有错误和警告。