我必须在nodejs中包含C代码,因此我使用了node-ffi
,我创建了log.c
:
#include <stdio.h>
#if defined(WIN32) || defined(_WIN32)
#define EXPORT __declspec(dllexport)
#else
#define EXPORT
#endif
EXPORT void etat_periph(char periph[]){
FILE* fichier=NULL;
fichier=fopen("log.txt","a+");
fputs(fichier,periph);
fprintf(fichier,"**********END**********");
fclose(fichier);
}
EXPORT void user_connect(char user[] ,char date[]){
FILE* fichier=NULL;
fichier=fopen("log.txt","a+");
fputs(fichier,"***********New User*********");
fputs(fichier,"User connected: %s at: %s",user,date);
fclose(fichier);
}
我添加到文件app.js:
var ffi = require('node-ffi');
var libfile = ffi.Library('./libfile', {
'etat_periph': ["void", ["string", "string"]],
'user_connect': ["void", ["string", "string"]]
});
io.sockets.on('connection', function (socket) {
socket.on("new_user", function (data) {
console.log("a new user is connected", data);
var current_date = new Date();
var date = current_date.toString();
libfile.user_connect(data, date);
});
socket.on("state", function (data) {
console.log(data);
libfile.etat_periph(data);
});
});
当我运行app.js时收到此错误消息:
错误:动态符号检索错误:./ libfile.so:未定义符号: etat_periph