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"
]
至少插件编译没有错误和警告。
导入共享库 (.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"
]
至少插件编译没有错误和警告。