Mam problem z próbą załadowania C 32-bitowej biblioteki DLL z modułem nodejs-ffi. Oto mój kod:
Podczas pracy węzeł generuje błąd w Dynanic_library.js: 74 Błąd dynamicznego łączenia
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);
}
}
Używam Maszynopisu, ale jestem pewien, że to nie ma nic wspólnego z problemem
Dziękuję wam za pomoc!
Odpowiedzi:
0 dla odpowiedzi № 1Czy sprawdziłeś, czy twój węzeł jest 32-bitowy? JEŻELI twój węzeł jest 64-bitowy, przełącz się na 32 i spróbuj ponownie.