我正在尝试使用 ncursesw6.1(链接到 PicoLisp)。据我所知,PicoLisp 以这样一种方式直接传递值,以至于我通过非 C 语言调用 ncurses 的事实不应该成为一个因素[1]。但是,当我尝试使用颜色对(这样定义)时:
(curses "init_pair" NIL 1 *COLOR-SCHEME-TEXT *COLOR-SCHEME-BACKGROUND-DARK)
(curses "init_pair" NIL 2 *COLOR-SCHEME-COMMENT *COLOR-SCHEME-BACKGROUND-DARK)
(curses "init_pair" NIL 3 *COLOR-SCHEME-FUNCTION *COLOR-SCHEME-BACKGROUND-DARK)
(curses "init_pair" NIL 4 *COLOR-SCHEME-VALUE *COLOR-SCHEME-BACKGROUND-DARK)
(curses "init_pair" NIL 5 *COLOR-SCHEME-BACKGROUND-DARK *COLOR-SCHEME-COMMENT)
(curses "init_pair" NIL 6 *COLOR-SCHEME-BACKGROUND-DARK *COLOR-SCHEME-FUNCTION)
(curses "init_pair" NIL 7 *COLOR-SCHEME-BACKGROUND-DARK *COLOR-SCHEME-VALUE)
Run Code Online (Sandbox Code Playgroud)
它不起作用。相反,颜色对 1、2 和 3 都显示为相同的颜色对。然后 4 和 6 显示*COLOR-SCHEME-COMMENT在上面,*COLOR-SCHEME-BACKGROUND-DARK5 和 7 显示为 4 和 6 的反面。这似乎与我输入的内容没有任何逻辑关系。更奇怪的是,当我使用非自定义颜色(颜色 0-7)时,它也不起作用,因此通过定义这些配色方案颜色init_color与它无关。
我已经单独测试了颜色对 1 的颜色,所以我知道颜色被正确初始化。
到底是怎么回事init_pair …
为了在Mac OS X(10.6.7)上构建64位PicoLisp,我似乎遇到了OSX Dev的问题.工具GNU汇编程序('as'),版本1.38.我的Xcode是版本3.2.4.我生成的(生成的)x86-64.darwin.base.s中导致问题的行通常如下所示:
call foo@plt
Run Code Online (Sandbox Code Playgroud)
...他们给我这样的错误信息:
x86-64.darwin.base.s:41694:junk `@plt' after expression
Run Code Online (Sandbox Code Playgroud)
在Linux和SunOS上,64位PicoLisp构建没有问题.这些平台可能具有更强大(更新)版本的GNU汇编程序.我不知道新的GNU汇编程序是否适用于OSX/Darwin ...还是可以有其他解决方案?
如果你想在OSX/Darwin上自己尝试一下,我可以给你一些需要的文件.