我已将项目上传到Github以显示问题:https://github.com/EamonnLaffey/ctypes-test
我正在使用ctypes.open()
来加载一个简单地调用依赖dll函数的dll来打印一条消息。
在扩展名的数据文件夹中有两个dll。还有一个可执行文件,test.exe调用扩展程序试图调用的相同函数来验证它是否正常工作。
要获取dll的路径,我在扩展名的package.json中设置"unpack": true
,并在index.js中调用以下内容:
var dllPath = Services.io.newURI(data.url('operations.dll'), null, null).QueryInterface(Ci.nsIFileURL).file.path;`
这将返回诸如
之类的路径C:\Users\Eamonn\AppData\Local\Temp\1\f6ff0a5f-64b9-4953-a7a4-cb5b0a16c29c\extensions\@extension\data\operations.dll
当我手动转到路径时,我可以按预期看到operations.dll,supports.dll和test.exe。运行test.exe将成功加载operations.dll,然后加载supports.dll。
但是,在路径上调用ctypes.open()
时会返回以下错误:
console.error: ctypes-test-ext:
Message: Error: couldn't open library C:\Users\Eamonn\AppData\Local\Temp\1\f6ff0a5f-64b9-4953-a7a4-cb5b0a16c29c\extensions\@extension\data\operations.dll: error 126
当我加载一个没有任何依赖dll的dll ctypes.open()
时