【问题标题】:Node-gyp/C++ import shared library (.so)Node-gyp/C++ 导入共享库 (.so)
【发布时间】:2018-05-26 00:53:47
【问题描述】:

导入共享库 (.so) 似乎不是一件容易的事。我尝试按照post 中的说明进行操作,但我真的无法让它工作。没有库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。还是一样的错误。

【问题讨论】:

    标签: c++ binding static-libraries node-gyp


    【解决方案1】:

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

    binding.gyp 更新为

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

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

    【讨论】:

      猜你喜欢
      • 2016-02-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-29
      • 1970-01-01
      • 2017-07-20
      相关资源
      最近更新 更多