我正在使用一个用 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/