首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >node-ffi模块无法加载32位C dll -动态链接错误

node-ffi模块无法加载32位C dll -动态链接错误
EN

Stack Overflow用户
提问于 2014-09-30 04:54:13
回答 1查看 1.7K关注 0票数 1

我在尝试使用nodejs-ffi模块加载C32位DLL时遇到了一些问题。这是我的代码:

运行时,node在Dynanic_library.js上抛出错误: 74动态链接错误

代码语言:javascript
复制
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,但我非常确定这与问题无关

感谢你们的帮助!

EN

回答 1

Stack Overflow用户

发布于 2016-05-02 21:12:44

你有没有检查你的节点是32位的?如果您的节点是64位,则切换到32位,然后重试。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26108718

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档