在莫兹尔分店,我跑了:
SecSess.Logger.info("ctypes test");
Components.utils.import("resource://gre/modules/ctypes.jsm");
SecSess.Logger.info("1");
this.lib = ctypes.open("libcrypto.so");
SecSess.Logger.info("2");
var a = new Uint8Array(1<<10);
SecSess.Logger.info("3");
var ptr = new ctypes.uint8_t.ptr(a.buffer);
SecSess.Logger.info("4");为什么在你可能会问的每一步之后都会出现这种丑陋的日志记录呢?好的,这段代码失败了,没有给我显示错误。(或者至少我找不到错误消息)
这是印刷本:
ctypes test
1
2
3因此,不会打印第5条日志消息,这意味着以下语句永远不会完成:
var ptr = new ctypes.uint8_t.ptr(a.buffer);这是一些我必须使用的旧代码的简化版本,我在网上也发现它是有效的。但是它不起作用。这个附加组件不是使用带有jpm的新SDK开发的。坦白地说,我不知道它是如何开发的,是什么时候开发的,但我需要对它进行一些测试。它附带了在组件和模块目录中排序的几个源文件以及根目录中的chrome.manifest和install.rdf。为了使其工作,我将这些文件复制到Mozilla的扩展名目录中。扩展执行,但似乎存在一个问题的ctype。不再完全支持ctype了吗,还是这些旧样式的插件对现代火狐不再有效?
致以敬意,
咆哮
发布于 2015-11-15 02:33:33
我想他们找到了一个补丁,不允许用缓冲区做指针。我再查一遍。
编辑:啊,按照这个:ArrayBuffers,您不必用ctypes.uint8_t.ptr包装它,只需将它像a.buffer一样传递到任何需要它的地方。:)
https://stackoverflow.com/questions/33714691
复制相似问题