4

USB デバイス用の Node Js 用の C++ モジュールを作成しようとしています。accesio USB-IIRO-16 I/Oボード(accesio.com/MANUALS/USB-IIRO-16.PDF)です。Ubuntu 12.04 LTSにlibusbとともにLinuxドライバーをインストールしました。サンプル アプリ (C++ で作成) は I/O ボードで正常に動作しており、C++ で問題なく通信できます。私は nodejs モジュールを書くのが初めてで、大学以来 C++ も書いていません。モジュールも正常にコンパイルされています。サンプルアプリで使用する accesio が提供する USBDeviceManager クラスを使用しています。

これをモジュールのベースとして使用しました: https://github.com/kkaefer/node-cpp-modules/tree/master/06_objects

hppファイルをサンプルアプリで使用しているaccesioが提供するUSB​​DeviceManagerに置き換え、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

4

0 に答える 0