Javascript Js ctypes第三部分dll,返回字符串

Javascript Js ctypes第三部分dll,返回字符串,javascript,firefox-addon,jsctypes,Javascript,Firefox Addon,Jsctypes,我正在使用一个带有js ctypes的DLL,它是用C编写的 该方法返回一个字符串,但是当我尝试访问指针的内容时,firefox崩溃了 以下代码有效: 功能声明: 函数调用: console.log输出: ctypes.char.ptr(ctypes.UInt64("0x64ff5b48")) ctypes.char.ptr(ctypes.UInt64("0x64ff5b48")) 但此代码不起作用: 功能声明: 函数调用 console.log输出: ctypes.char.ptr(cty

我正在使用一个带有js ctypes的DLL,它是用C编写的

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

以下代码有效:

功能声明:

函数调用:

console.log
输出:

ctypes.char.ptr(ctypes.UInt64("0x64ff5b48"))
ctypes.char.ptr(ctypes.UInt64("0x64ff5b48"))
但此代码不起作用:

功能声明:

函数调用

console.log
输出:

ctypes.char.ptr(ctypes.UInt64("0x64ff5b48"))
ctypes.char.ptr(ctypes.UInt64("0x64ff5b48"))
同样的事情


这样firefox就会崩溃。有人知道怎么解决这个问题吗?我这样做是为了调整插件。

尝试将
str
转换为如下已知长度:
var-strCasted=ctypes.cast(str,ctypes.char.array(100.ptr))然后尝试如下读取字符串:
var jsStr=strCasted.contents.readString()
如果不跳到35; jsctypes moz频道,应该可以做到这一点。我们将讨论它,然后在这里更新解决方案。将此粘贴到您的url栏:irc://moznet/jsctypes


关于铸造的本教程应该有帮助:

我发现了问题!谢谢你,诺伊蒂德。在第二个示例中,我在
str.readString()
之前关闭库。它使firefox崩溃。我试图减少问题帖子上的代码,但忘记了这个细节,很抱歉。

谢谢你。对不起,请在编辑后再次检查我的问题。现在所有的代码都在那里了,我找到了导致firefox崩溃的原因,但我不知道如何解决。@Sabbathman顺便问一下,你能在你的工作和非工作代码中告诉我什么是
str.toString()
我很好奇,谢谢你在做
.readString()之前必须先做
.toString()
由于ReadStringKKKK发生崩溃,我正在使用财政打印机DLL。我不能执行
str.toString().readString()
,因为在此之后,我的对象不是CData类型,并且没有方法
readString()
Ooh请再次检查问题。str.toString()在这两种情况下都是相同的。很好的发现:)我不知道如果库关闭,readString会崩溃,这很有趣,感谢大家的分享。我也有同样的问题,但事实上,这是因为我的原生代码在JS读取字符串之前释放了字符串。
Core.init();
var number = new ctypes.int32_t(1);
var result = Core.getStr(number);
console.log(result.toString());
result.readString();
ctypes.char.ptr(ctypes.UInt64("0x64ff5b48"))