javascript - 带有字符串返回的js-ctypes第三方dll

标签 javascript firefox-addon jsctypes

我正在使用一个用 C 编写的带有 js-ctypes 的 DLL。

该方法返回一个字符串,但是当我尝试访问指针的内容时,firefox 崩溃了!

以下代码有效:

函数声明:

var getStr = lib.declare("getString", 
            ctypes.default_abi,
            ctypes.char.ptr,
            ctypes.int32_t
            );

函数调用:

let number = new ctypes.int32_t(1);
var str = getStr(number);
console.log(str.toString());
str.readString();

console.log 输出:

ctypes.char.ptr(ctypes.UInt64("0x64ff5b48"))

但是这段代码不起作用:

函数声明:

var Core = {
    init : function(){
        this.lib = ctypes.open("library");
        this.getStr = this.lib.declare("getString",
                                       ctypes.default_abi,
                                       ctypes.char.ptr,
                                       ctypes.int32_t);
    },

    close : function(){
        this.lib.close();
    }

}

函数调用

Core.init();
var number = new ctypes.int32_t(1);
var result = Core.getStr(number);
console.log(result.toString());
result.readString();

console.log 输出:

ctypes.char.ptr(ctypes.UInt64("0x64ff5b48"))

同样的事情!

通过这种方式,firefox 崩溃了。任何人都知道如何解决这个问题?我这样做是为了调制插件。

最佳答案

我找到问题了!谢谢诺伊达特。在第二个示例中,我在 str.readString() 之前关闭了库。它使 Firefox 崩溃。我试图减少问题帖子上的代码而忘记了这个细节,我很抱歉。

关于javascript - 带有字符串返回的js-ctypes第三方dll,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30738818/

相关文章:

javascript - 如何在 JavaScript 中从带有缩进的平面列表构建树?

javascript - XMLHttpRequest responseText 在 Firefox WebExtension 中始终为空

javascript - C dll 将图像数据发送到 XUL 应用程序。 Canvas

firefox - 在 Firefox ChromeWorker 中使用 ctypes 函数

javascript - 创建文件对象或 Blob

javascript - 如何设置一个包含掉落物体的数组

javascript - Node.normalize() 在 IE6 中崩溃

javascript - Firefox WebExtensions browser.tabs.query() 返回无法访问的数组。有人可以解释为什么吗?

javascript - 使用javascript在firefox中Grep一个页面

javascript - Firefox 插件仅在调试状态下执行