我正在尝试为USB设备编写Node Js的C ++模块。它是一个accessio USB-IIRO-16 I / O板(accesio.com/MANUALS/USB-IIRO-16.PDF)。我在Ubuntu 12.04 LTS上安装了libusb的linux驱动程序。我有使用I / O板运行良好的示例应用程序(用C ++编写),并且能够在C ++中与它进行良好的通信。我是编写nodejs模块的新手,也没有从大学开始编写C ++。我的模块编译也很好。我正在使用他们在示例应用程序中使用的accesio提供的USBDeviceManager类。
我用它作为模块的基础: https://github.com/kkaefer/node-cpp-modules/tree/master/06_objects
我用示例应用程序中使用的accesio提供的USBDeviceManager替换了hpp文件,并添加了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命名空间。
基本上我想做的是能够读/写I / O板,类似于此处的示例应用程序: http://accesio.com/files/packages/AIOUSB-Latest.tar.gz