【问题标题】:Binding data using Node.js FFI (javascript & c)使用 Node.js FFI (javascript & c) 绑定数据
【发布时间】:2011-07-28 18:40:19
【问题描述】:

我正在使用 node 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;
}

我用来调用这个 c 程序的 javascript 代码是:

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);

如果我在 create 函数中使用 int 而不是 char(如图所示),这个程序就可以工作,但是我需要在这个函数中使用 char *。因此,如果我将函数更改为create(char * dir),我将无法正常工作。

我试图从

更改 js 中的调用

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

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

你能帮忙吗?

谢谢

【问题讨论】:

    标签: javascript c node.js bind node-ffi


    【解决方案1】:

    尝试将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" ] ]
    

    【讨论】:

      猜你喜欢
      • 2016-08-11
      • 1970-01-01
      • 2013-09-09
      • 2020-07-07
      • 1970-01-01
      • 1970-01-01
      • 2010-12-23
      • 1970-01-01
      相关资源
      最近更新 更多