2

Node-ffi を使用してMITIEの Node バインディングを作成しています。しかし、私は問題を抱えていました、

関数の引数は次のとおりですchar**: 次のような NULL で終了する C 文字列の配列:

int run (char** tokens)
{
    try
    {
        std::vector<std::string> words;
        for (unsigned long i = 0; tokens[i]; ++i)
            words.push_back(tokens[i]);

        return 1;
    }
    catch(...)
    {
        return 0;
    }
}

そして、これは私がffiを使用したものです:

const ffi = require('ffi');
const ArrayType = require('ref-array');

const StringArray = ArrayType('string')

const test = ffi.Library('test', {
  'run': [ 'int', [StringArray] ]
});

test.run(['a', 'b']);

しかし、私は得ました: Segmentation fault: 11.

サンプルコードをこのレポにアップロードしました。

そして、このレポでは、私がctypesによって Python バインディングを作成したこともわかります。うまく動作します。

ここに私の動作環境があります:

  • npm@3.10.10
  • node@7.10.0
  • ダーウィン x64 17.0.0
  • MacBook Pro (13 インチ、2016、Thunderbolt 3 ポート x 4)
  • macOS 10.13
4

1 に答える 1