Связывание данных с использованием Node.js FFI (javascript & c) - PullRequest
1 голос
/ 04 апреля 2011

Я использую узел ffi для вызова библиотеки c, и у меня есть некоторые проблемы с использованием этого кода:

Эта программа c создает папку в текущем каталоге и возвращает 1, если ошибки нет.

#include <stdint.h>
#include <stdio.h>
#include <sys/stat.h>

int create(int dir) 
{
int id;
id = mkdir(dir, S_IRWXU);   
if (id == -1)
  return 1;
else
  return 2;
}

код javascript, который я использую для вызова этой программы c:

var FFI = require("../lib/ffi");
var libsender = new FFI.Library("./libsender", {"create": [ "int", [ "int" ] ] });


if (process.argv.length < 3) {
console.log("Arguments: " + process.argv[0] + " " + process.argv[1] + " <max>");
process.exit();
}

var output;
output = libsender.create(process.argv[2])
console.log("Your output: " + output);

Эта программа работает, только если я использую int вместо char в функции create (как показано), но мне нужно использовать char * в этой функции. Поэтому, если я изменю функцию на create(char * dir), я не буду работать.

Я пытался изменить вызов в js с

{"create": [ "int", ["int"] ] });

до

{"create": [ "int", ["char *"] ] });.

Вы можете помочь с этим?

Спасибо

1 Ответ

2 голосов
/ 04 апреля 2011

Попробуйте изменить int create(int dir) на int create(char* dir) и…

var libsender = new FFI.Library("./libsender", { "create": [ "int", [ "int" ] ]

... до ...

var libsender = new FFI.Library("./libsender", { "create": [ "int", [ "string" ] ]
...