Я пытаюсь написать модуль C ++ для Node Js для устройства USB. Это плата ввода-вывода accesio USB-IIRO-16 (accesio.com/MANUALS/USB-IIRO-16.PDF). У меня установлены драйверы linux вместе с libusb на Ubuntu 12.04 LTS. У меня есть примеры приложений (написанные на C ++), работающие нормально с платой ввода / вывода, и я могу общаться с ней просто отлично в C ++. Я новичок в написании модулей nodejs, и с тех пор не писал C ++. У меня также есть модуль компиляции. Я использую класс USBDeviceManager, предоставляемый accesio, который они используют в своем примере приложения.
Я использовал это в качестве основы для модуля:
https://github.com/kkaefer/node-cpp-modules/tree/master/06_objects
Я заменил файл hpp на USBDeviceManager, предоставленный accesio, который используется в примере приложения, и добавил ObjectWrap.
class USBDeviceManager : public node::ObjectWrap {...}
Остальное такое же, как у USBDeviceManager вместе с примером кода модуля. Однако все прекрасно скомпилируется, когда я запускаю узел run.js, который я получаю:
module.js:485
process.dlopen(filename, module.exports);
^
Error: /home/parallels/Documents/node-accesio/build/Release/accesio.node: undefined symbol: _ZTVN6AIOUSB16USBDeviceManagerE
at Object.Module._extensions..node (module.js:485:11)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
at Module.require (module.js:362:17)
at require (module.js:378:17)
at Object.<anonymous> (/home/parallels/Documents/node-accesio/run.js:1:77)
at Module._compile (module.js:449:26)
at Object.Module._extensions..js (module.js:467:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
Я перепробовал много движущегося кода и некоторую онлайн-документацию, но не могу понять, что делать на этом этапе. Файлы cpp и js по-прежнему такие же, как в примере приложения-модуля (https://github.com/kkaefer/node-cpp-modules/tree/master/06_objects). единственное, что отличается, — это добавление USBDeviceManager в файл hpp и пространство имен AIOUSB.
По сути, я хочу иметь возможность чтения / записи на плату ввода-вывода, аналогичную примеру приложения, найденному здесь:
http://accesio.com/files/packages/AIOUSB-Latest.tar.gz
Задача ещё не решена.
Других решений пока нет …