Совместная библиотека импорта Node-gyp / C ++ (.so) - PullRequest
0 голосов
/ 25 мая 2018

Импорт общей библиотеки (.so) не кажется легкой задачей.Я пытался следовать инструкциям в этом сообщении , но я действительно не могу заставить его работать.Здание без библиотеки РФ24 работает.Следуя инструкциям по сборке, в результате которых в папке /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 <>

Моя привязка.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

Я также пытался использовать полные имена файлов в разделе библиотеки , напримерlibrf24.so.1.3.1 и без флага -l.Также переключил запись library_dirs на include_dirs .Все та же ошибка.

1 Ответ

0 голосов
/ 25 мая 2018

Согласно этой статье я смог понять это.Сборка RF24 также записала соответствующие файлы заголовков в /user/local/include/RF24.

Обновил binding.gyp до

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

По крайней мере аддон компилируется без ошибоки предупреждения.

...