无法在 Firefox 插件中使用 ctypes.open 打开库(错误 126)
Couldn't open library (error 126) using ctypes.open in firefox addon
开发 Firefox 插件,使用 ctypes 加载自定义 DLL -
在我的真实计算机(win 7/64)上,DLL 加载顺利,但在我使用相同 OS 的测试 VM 中,出现以下错误:
console.error: bzaddon:
Message: Error: couldn't open library .\BZAddOnHelper.dll: error 126
Stack:
@resource://bzaddon/index.js:25:11
run@resource://gre/modules/commonjs/sdk/addon/runner.js:145:19
startup/</<@resource://gre/modules/commonjs/sdk/addon/runner.js:86:7
Handler.prototype.process@resource://gre/modules/Promise-backend.js:867:23
this.PromiseWalker.walkerLoop@resource://gre/modules/Promise-backend.js:746:7
this.PromiseWalker.scheduleWalkerLoop/<@resource://gre/modules/Promise-backend.j
s:688:37
加载库的代码:
// Get the chrome components
let { Ci, Cu, Cr } = require('chrome');
// Get ctypes
Cu.import("resource://gre/modules/ctypes.jsm");
// External DLL
var lib = ctypes.open(".\BZAddonHelper.dll");
我什至尝试使用完全空的 DLL,它不依赖于 msvc*:
screenshot of 'depends' on the target vm
我尝试使用将 DLL 移动到数据目录并使用 self.data.url 并且根本不使用任何路径。我尝试使用完整路径。唯一可行的是将我的 DLL 复制到 SysWow64(DLL 是 32 位,因为 firefox 是 32 位)。同样,运行 我的(开发)机器上的这个可以使用“.\dllname” - 但不能在任何其他计算机上使用......我完全不知所措......有人吗?
您不必安装到 system32,请参阅使用自定义 dll 的工作插件:github.com/NoitForks/Firefox_addon_sdk_jsctypes 和这个:github.com/NoitForks/fx-sapi-test Im确定你的错误是你没有使用使用 file:// 协议的字符串。如果它在 C:\blah.dll 做 ctypes.open('file://C:/blah.dll')
开发 Firefox 插件,使用 ctypes 加载自定义 DLL - 在我的真实计算机(win 7/64)上,DLL 加载顺利,但在我使用相同 OS 的测试 VM 中,出现以下错误:
console.error: bzaddon:
Message: Error: couldn't open library .\BZAddOnHelper.dll: error 126
Stack:
@resource://bzaddon/index.js:25:11
run@resource://gre/modules/commonjs/sdk/addon/runner.js:145:19
startup/</<@resource://gre/modules/commonjs/sdk/addon/runner.js:86:7
Handler.prototype.process@resource://gre/modules/Promise-backend.js:867:23
this.PromiseWalker.walkerLoop@resource://gre/modules/Promise-backend.js:746:7
this.PromiseWalker.scheduleWalkerLoop/<@resource://gre/modules/Promise-backend.j
s:688:37
加载库的代码:
// Get the chrome components
let { Ci, Cu, Cr } = require('chrome');
// Get ctypes
Cu.import("resource://gre/modules/ctypes.jsm");
// External DLL
var lib = ctypes.open(".\BZAddonHelper.dll");
我什至尝试使用完全空的 DLL,它不依赖于 msvc*:
screenshot of 'depends' on the target vm
我尝试使用将 DLL 移动到数据目录并使用 self.data.url 并且根本不使用任何路径。我尝试使用完整路径。唯一可行的是将我的 DLL 复制到 SysWow64(DLL 是 32 位,因为 firefox 是 32 位)。同样,运行 我的(开发)机器上的这个可以使用“.\dllname” - 但不能在任何其他计算机上使用......我完全不知所措......有人吗?
您不必安装到 system32,请参阅使用自定义 dll 的工作插件:github.com/NoitForks/Firefox_addon_sdk_jsctypes 和这个:github.com/NoitForks/fx-sapi-test Im确定你的错误是你没有使用使用 file:// 协议的字符串。如果它在 C:\blah.dll 做 ctypes.open('file://C:/blah.dll')