用node-ffi加载本地dll:没有这样的文件

问题描述

我尝试根据stackoverflownode-ffi documentation上的示例加载本地.dll。 但是我收到错误消息:没有这样的文件或目录,请打开“ ../test/user32.dll.so”。该文件在那里(没有例外)。 扩展名“ .so”会自动添加。知道我在做什么错吗?此代码平台依赖吗?我在使用Debian。

const path = require('path');
const fs = require('fs');
const ffi = require('ffi');

function setCursor() {
    const dllFile = path.join('../test','user32.dll');
    if (!fs.existsSync(dllFile)) {
        throw (new Error('dll does not exist'));
    }

    const user32 = ffi.Library(dllFile,{
        "SetCursorPos": [
            "bool",["int32","int32"]
        ]
    });

    console.log(user32.SetCursorPos(0,0));
}

setCursor();

解决方法

看起来 path 无法将 ../test 识别为父文件夹。我认为 path.join(__dirname,'..','test','user32.dll'); 应该会带您到正确的地方。