QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

楼主: zhoujc

请问如何在linux下用c显示汉字

[复制链接]
 楼主| 发表于 2004-7-19 17:43:42 | 显示全部楼层
我下载安装了cce
可是不知道怎么看它的源代码,安装的时候电脑也没提示我选择安装在哪个文件夹
回复

使用道具 举报

发表于 2004-7-20 13:14:04 | 显示全部楼层
检查font目录下的asc16文件。

要看源码根本不用安装软件,解开源码包用编辑器打开源程序即可。
回复

使用道具 举报

 楼主| 发表于 2004-7-20 15:22:40 | 显示全部楼层
我用./wblx运行你的程序,结果出现了一个画面,已经可以显示汉字了,可是很快就自动关掉了.然后出现下面的信息
Http://linside.8u8.com
怎么回事????
还有你的程序里面的汉字我都看不了,都是乱码,但是运行后可以看到五笔练习的画面,汉字可以正常显示
我下载的是rpm包,能看到源代码吗?应该怎么看阿
回复

使用道具 举报

发表于 2004-7-20 15:56:36 | 显示全部楼层
你下载的不是源码并运行make编译么?

在哪下载的rpm包?
回复

使用道具 举报

 楼主| 发表于 2004-7-20 16:00:57 | 显示全部楼层
就是linux公社,没有源代码,是rpm包
我自己写了一个显示汉字的程序,用gcc -o test test.c
可是显示找不到sdl.h这个库,以前调用gtk的时候也出现过折衷情况,好像要加一个什么命令,我忘了
回复

使用道具 举报

发表于 2004-7-20 16:07:18 | 显示全部楼层
到www.linuxeden.com可下载到源码包。

在程序中包含SDL/SDL.h,不然的话需要在编译时用-I参数指出头文件之于标准库的相对路径。

你的C基础须补一补。
回复

使用道具 举报

 楼主| 发表于 2004-7-20 16:17:41 | 显示全部楼层
好的,我去看看
我程序的开头已经加了#include sdl.h啦
用-I参数指出头文件之于标准库的相对路径???
具体那个命令怎么打呢?
回复

使用道具 举报

发表于 2004-7-20 16:27:08 | 显示全部楼层
注意SDL是大写的,你可以自己检查/usr/include/SDL目录看一看。

若#include <SDL/SDL.h>,这相对于/usr/include而言,绝对路径则是/usr/include/SDL/SDL.h。

若#include <SDL.h>,编译时/usr/include目录下是找不到SDL.h的,此时应加-I/usr/include/SDL参数。
回复

使用道具 举报

 楼主| 发表于 2004-7-20 16:46:59 | 显示全部楼层
问题解决了!谢谢
void putpixel(SDL_Surface *surface,int x,int y,Uint32 color)
{
  Uint16 *bufp;
  if(SDL_MUSTLOCK(surface)){
    if(SDL_LockSurface(surface)<0)return;
  }
  bufp=(Uint16 *)surface->pixels+y*surface->pitch/2+x;
  *bufp=color;
  SDL_UpdateRect(surface,x,y,1,1);
  if(SDL_MUSTLOCK(surface)){
    SDL_UnlockSurface(surface);
  }
}
是画点阵图的函数吧?我用了以后编译的时候老说SDL_UnlockSurface SDL_UpdateRect等没有定义,这些不是sdl自带的吗?我看你的程序中也没用定义这几个函数
回复

使用道具 举报

发表于 2004-7-20 17:28:20 | 显示全部楼层
这个函数只是16位色模式下用给定颜色在surface(surface是SDL绘图面,不一定是屏幕)的x,y处画点。

编译时除了要指明头文件位置外还要指明库的位置(标准位置除外),如-I/usr/include/SDL -lSDL之类,等等。
回复

使用道具 举报

 楼主| 发表于 2004-7-21 15:38:08 | 显示全部楼层
我编译的时候用了这条命令 gcc -o test test.c -I/usr/include/SDL
程序也进行初始化了,可是编译以后老是出现这样的信息
/tmp/ccGnlS6J.o(.text+0xe3): In function `putpixel':
: undefined reference to `SDL_LockSurface'
/tmp/ccGnlS6J.o(.text+0x136): In function `putpixel':
: undefined reference to `SDL_UpdateRect'
/tmp/ccGnlS6J.o(.text+0x15d): In function `putpixel':
: undefined reference to `SDL_UnlockSurface'
怎么回事呢
回复

使用道具 举报

 楼主| 发表于 2004-7-21 15:41:44 | 显示全部楼层
还有sdl这个库没有一个函数是可以直接画点的吗?
我记得turbo c有putpixel函数可以画点,sdl中没有吗?
回复

使用道具 举报

 楼主| 发表于 2004-7-21 15:47:41 | 显示全部楼层
我想自己建一个拼音和汉字对应的表,通过拼音读出汉字,然后再用那个汉字的显示程序把汉字画出来.
请问你那个wubi.tab是用什么函数写的?我想过用struct,不过那个好像是在内存里面建一个表,如何在硬盘里建表呢
回复

使用道具 举报

 楼主| 发表于 2004-7-21 16:10:42 | 显示全部楼层
程序已经编译通过了,可是屏幕一闪就关掉了,然后出现下面信息
Audio device open for 44.1Khz, stereo, 16bit failed
Trying 44.1Khz, 8bit stereo.
Audio device open for 44.1Khz, stereo, 8bit failed
Trying 48Khz, 16bit stereo.
Fatal signal: Segmentation Fault (SDL Parachute Deployed)
运行你的程序也是这个情况,请问是机的问题吗?
回复

使用道具 举报

发表于 2004-7-21 22:33:14 | 显示全部楼层
SDL没有直接提供画点的函数。你可以看教程: http://www.libsdl.org/intro.cn/toc.html

如果出现“Fatal signal: Segmentation Fault (SDL Parachute Deployed)
”则将Makefile中的-O2去掉再运行make编译。

请直接找现成的拼音码表吧。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-7 20:41 , Processed in 0.043406 second(s), 12 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表