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