Js-ctypes 第三部分 dll with string return
Js-ctypes third part dll with string return
我正在使用用 C 编写的带有 js-ctypes 的 DLL。
方法return一个字符串,但是当我尝试访问指针的内容时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
转换为已知长度:var strCasted = ctypes.cast(str, ctypes.char.array(100).ptr);
然后尝试像这样读取字符串:var jsStr = strCasted.contents.readString();
如果不跳转到 #jsctypes moz 频道,那应该可以解决问题我们'我们将讨论它,然后在此处更新解决方案。将此粘贴到您的 url 栏:irc://moznet/jsctypes
本铸造教程应该有所帮助:https://gist.github.com/Noitidart/081ef49002a90fe43005#comment-1470308
我找到问题了!谢谢诺伊达特。在第二个示例中,我在 str.readString()
之前关闭了库。它使 Firefox 崩溃。我试图减少问题post上的代码,忘记了这个细节,对不起。
我正在使用用 C 编写的带有 js-ctypes 的 DLL。
方法return一个字符串,但是当我尝试访问指针的内容时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
转换为已知长度:var strCasted = ctypes.cast(str, ctypes.char.array(100).ptr);
然后尝试像这样读取字符串:var jsStr = strCasted.contents.readString();
如果不跳转到 #jsctypes moz 频道,那应该可以解决问题我们'我们将讨论它,然后在此处更新解决方案。将此粘贴到您的 url 栏:irc://moznet/jsctypes
本铸造教程应该有所帮助:https://gist.github.com/Noitidart/081ef49002a90fe43005#comment-1470308
我找到问题了!谢谢诺伊达特。在第二个示例中,我在 str.readString()
之前关闭了库。它使 Firefox 崩溃。我试图减少问题post上的代码,忘记了这个细节,对不起。