2015-08-25 3 views
3

Допустим, у меня есть исходные файлы и заголовков для кода C (шины driver.c и шины driver.h) может я называю функции внутри них от node.jsВызов кода C из node.js

, например шины driver.h

void bus_init(void); 
void bus_write(char *buf); 

Я хочу, чтобы вызвать эти функции из Node.js.

+0

Возможно дублируется? http://stackoverflow.com/questions/9629677/how-can-i-use-ac-library-from-node-js – danielfranca

+0

Или посмотрите: https://nodejs.org/api/addons.html – danielfranca

+0

Я читаю их, но я их не понимаю. если бы вы могли привести пример с bus-driver.h, это может быть очень полезно, спасибо в любом случае. – Nasr

ответ

3

Узелффы, кажется, самый простой способ сделать это. Я не тестировал его, чтобы он мог иметь проблемы, которые я сейчас не понимаю.

Но я бы предложил сделать что-то подобное, следуя tutorial. Установить nodeffi:

Создайте библиотеку для своего автобусного водителя, если у вас ее нет, назовем ее libbusdriver.

Тогда в вашем JavaScript сделать что-то похожее на это:

var ffi = require('ffi'); 

var libbusdriver = ffi.Library('libbusdriver', { 
    'bus_init': [ 'void', [ 'void' ] ], 
    'bus_write': [ 'void', [ 'string' ] ], 
}); 
libbusdriver.bus_init(); 
libbusdriver.bus_write("Hello"); 

Позвольте мне знать, если это помогает.

+0

Я попробовал это и получил эту ошибку после выполнения программы node.js ** Ошибка: Ошибка динамической связывания: libusbdriver.so: невозможно открыть файл общих объектов: такой файл или каталог не существует ** библиотека и файл test.js находятся в тот же каталог, я пытался переименовать библиотеку .so и .a без разницы – Nasr

+0

Вы называете это libusbdriver или libbusdriver? – danielfranca

+0

Извините, я поменяю его на libbusdriver, но получаю ту же ошибку. правильно ли размещать программу node.js и библиотеку в том же каталоге? – Nasr

Смежные вопросы