/ / node-ffiモジュールが32ビットC DLLをロードできない - ダイナミックリンクエラー - node.js、dll、32ビット、ダイナミックリンク、node-ffi

node-ffiモジュールが32ビットC DLLをロードできない - ダイナミックリンクエラー - node.js、dll、32-bit、dynamic-linking、node-ffi

私はnodejs-ffiモジュールでCの32ビットDLLを読み込もうとしているのですが、これは私のコードです:

実行中、ノードはDynanic_library.jsでエラーをスローします:74 Dynamic Linking Error

var ffi = require("ffi");
var ref = require("ref");
var path = require("path");

import idatabase = require("./IDatabase");
import idataset = require("./Dataset");

var dllpath = path.join(__dirname, "../../StoneBaseDLL.dll");
var dbpath = path.join(__dirname, "../../../database/metadata/metadata.db");

export class Stonebase implements idatabase.IDatabase
{
dbHandler;
dbConnection;

constructor() {

this.dbHandler = ffi.Library(dllpath, {
"connect": ["void*", ["string"]],
"Execute": ["void*", ["string", "void*"]],
"disconnect": ["void*", ["void*"]],
"EndOfResultSet": ["bool", ["void*"]],
"Next": ["void", ["void*"]],
"getNumberOfFields": ["int", ["void*"]],
"GetField_AsString": ["string", ["int", "void*"]],
"GetField_AsChar": ["string", ["int", "void*"]],
});

this.dbConnection = this.dbHandler.connect(dbpath);
}

execute(query: string) {
var data: Array<Array<string>>;
var columns: Array<string>;
data = [];
columns = [];
var i = 0;

var dset = this.dbHandler.Execute(query, this.dbConnection);

for (var j = 0; j < this.dbHandler.getNumberOfFields(dset); j++) {
columns[j] = "column" + j;
}

while (!this.dbHandler.EndOfResultSet(dset)) {
var line: Array<string>;
line = [];
for (var j = 0; j < this.dbHandler.getNumberOfFields(dset); j++) {
line[j] = (<string>this.dbHandler.GetField_AsChar(j, dset));
}
data[i] = line;

this.dbHandler.Next(dset);
i++;
}

return new idataset.Dataset(data, columns);
}

}

私はTypescriptを使っていますが、これは問題とは何の関係もないと確信しています

助けてくれてありがとう!

回答:

回答№1は0

あなたのノードが32ビットであることを確認しましたか?ノードが64ビットの場合は、32に切り替えてもう一度お試しください。