分类: C/C++
2006-05-09 21:30:17
这个问题折腾了我好长时间。
在第二次学C的过程中,根据老师指点,使用《C语言的科学和艺术》这本书。这本书自带了一个扩展库,内容挺全的,为不同的平台准备了多个版本。书也是根据这个库写示例代码的,在前六章中不使用这个库我还是可以做练习的,但从第七章进入库和模块化开发后,如果不使用这个扩展库就较难往下进行了,因为许多练习就做不了,所以决定安装这个库。
(一)在RH9上
事实也证明安装这个扩展库并不容易,不过这可能跟我的英文水平较差和C基础较差有关。我做练习的平台是RH9,使用SSH远程连接。我把unix-xwindows文件夹考到RH上,根据README,先执行sh cslib.shar命令,生成cslib子目录,然后进入到这个目录,执行make命令,生成gccx文件,然后把它考到~/bin目录中。当我写好一个c文件后,我用gccx去编译它,结果出现 -lX11 之类错误。用vi查看gccx的内容,是因为它在调用gcc前加了这样一个参数,这个参数是跟画图窗口准备的,但是它却不跟我的系统匹配,结果就出了这样的错误,使我不能往下进行。我不知道它为什么会不跟我的系统相匹配,因为这个系统上安装了图形界面,却提示是找不到 -lX11 ,是ld的连接错误,也许是系统或连接器的版本问题吧。
如果我仍然使用gcc去编译的话,那就像没有安装这个库一样出错。如果把gccx中那个 -lX11 参数去掉,就不会报错了,顶多只是仍然不能使用画图的功能(会报一堆关于graphics.c文件中函数的错误),至少其它的可以编译通过(好像不同版本扩展库在前面make时生成的cslib.a相同)。
于是我重搞了一次,安装的是standart版本,方法和前面一样,我发现和前面不同的就是gccx中缺少了-lX11 参数。还有一的地方,它编译画图程序时不再报错,只是运行生成的可执行文件没有什么反应,马上出现提示符。
随后根据师兄的指点,我又下了一个Turbo C++ 3.1版的汉化版,在这个编译器上尝试一下。这次终于实现了,开始的安装方法和刚刚上面的一样,完成后在"选项"-"编译器"-"代码生成"菜单中将"模式"改为"大型"。在使用的时候也不与平常相同,并不是直接编译单个源文件,而是需要把程序作为一个perject来处理。首先把CSLIB.LIB和HELLO.PRJ考到目标目录下,在"工程"菜单中选择"打开工程",把HELLO.PRJ载入,然后把项目中的hello.c移除,然后添加目标文件,再编译运行就没有错误了。
还有一个需要注意的地方是,在使用扩展库画图(第7章)的时候,第一次运行时图形会正常显示,但是以后运行都会显示"Error:Internal Error:RegisterClass failed",此时只要在任务管理器中把名为"wowexec"的进程(它会空2格显示在进程列表中,并且没有标明内存使用数)结束,就可以恢复正常了。不过有个缺点,每执行一次画图程序都需要在任务管理器中手动结束这个进程。