gpt4 book ai didi

javascript - FF 插件 : How to declare C function fgets in javascript

转载 作者:行者123 更新时间:2023-11-29 18:17:19 25 4
gpt4 key购买 nike

我正在开发 firefox 插件,我想使用 WinApi 读取文件。我设法连接到 WinApi,它工作正常。

var lib = ctypes.open("user32.dll");
var msgBox = lib.declare("MessageBoxW",
ctypes.winapi_abi,
ctypes.int32_t,
ctypes.int32_t,
ctypes.jschar.ptr,
ctypes.jschar.ptr,
ctypes.int32_t);
var MB_OK = 0;
var ret = msgBox(0, "Hello world", "title", MB_OK);

现在我声明fopen:

const FILE = new ctypes.StructType("FILE").ptr;   
var fopen = libc.declare("fopen", // symbol name
ctypes.default_abi, // cdecl calling convention
FILE, // return type (FILE*)
ctypes.char.ptr, // first arg (const char*)
ctypes.char.ptr); // second arg (const char*)

但是我没有声明fgets。我还是想不通。我尝试这样做:

var libc = ctypes.open("msvcrt.dll");
var fgets = libc.declare("fgets",
ctypes.default_abi,
ctypes.char.ptr,
ctypes.char.ptr,
ctypes.int32_t,
FILE);
// Call the function, and get a FILE* pointer object back.
console.log(LOG_FILTER, "Try to open file.");
var file1 = fopen("1.in", "r");

var SIZE = 100;
var line = ctypes.char(SIZE).ptr;
line = fgets(line, SIZE, file1);`

我想我没有使用错误的库,因为那样我会得到错误“错误:在库中找不到函数符号”,但我仍然得到“TypeError:预期类型指针,得到(void 0)”

最佳答案

这里是一堆不同的 ctype 声明的例子: https://builder.addons.mozilla.org/package/161408/latest/

如果您仍然无法解决问题,请将其发布并尝试让 fget 工作。

但是建议使用 namier,使用最好的跨平台选项,但是为了学习的缘故,如果你不明白,我们可以在有时间的时候做这个 fget

关于javascript - FF 插件 : How to declare C function fgets in javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21936362/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com