C语言 如何将readline包含到Zig项目中



我正在尝试在我的Zig项目中使用readline

我设法使链接器找到它添加到构建文件:

exe.linkLibC();
exe.addIncludeDir("/usr/local/opt/readline/include");
exe.addLibPath("/usr/local/opt/readline/lib");

尽管它找到了readline定义,但它似乎没有"看到"。

错误:

▶ zig build                         
./src/main.zig:1:18: error: C import failed
const readline = @cImport({
^
/usr/local/opt/readline/include/readline/rltypedefs.h:71:36: note: unknown type name 'FILE'
typedef int rl_getc_func_t PARAMS((FILE *));
^
/usr/local/opt/readline/include/readline/readline.h:448:28: note: unknown type name 'FILE'
extern int rl_getc PARAMS((FILE *));
^
/usr/local/opt/readline/include/readline/readline.h:578:8: note: unknown type name 'FILE'
extern FILE *rl_instream;
^
/usr/local/opt/readline/include/readline/readline.h:579:8: note: unknown type name 'FILE'
extern FILE *rl_outstream;
^
/usr/local/opt/readline/include/readline/readline.h:937:3: note: unknown type name 'FILE'
FILE *inf;
^
/usr/local/opt/readline/include/readline/readline.h:938:3: note: unknown type name 'FILE'
FILE *outf;
^
zig-lua...The following command exited with error code 1:

我怎样才能使它工作?

似乎问题不在构建文件中,而是在cImport.

我在做这个:

const readline = @cImport({
@cInclude("readline/readline.h");
});

由于错误消息抱怨来自C的studio .h的东西,我也添加了:

const readline = @cImport({
@cInclude("stdio.h");
@cInclude("readline/readline.h");
});

现在Zig构建工作了。

最新更新