linux下c++编程 GBKTOUTF8问题

linux下c++编程 GBKTOUTF8问题,第1张

GLIB_INCLUDES=`pkg-config --cflags glib-2.0 gthread-2.0`

GLIB_LIBS=`pkg-config --libs glib-2.0 gthread-2.0`

/*

* writed by kf701

*/

#include <stdio.h>

#include <glib.h>

int main(int argch,char *argv[])

{

GError * ge = NULL

char inbuf[20*1024]

FILE *in = fopen(argv[1],"r")

int size = fread( inbuf, 1, sizeof(inbuf), in )

printf( "file size = %d\n", size )

int outlen = 0, readlen = 0

char *out = g_convert( inbuf, size, "UTF-8", "GBK", &readlen, &outlen, &ge )

printf( "convert outlen=%d , readlen = %d\n", outlen, readlen )

if( NULL == out )

{

printf("out is NULL,err=%s\n", ge->message)

exit(0)

}

char output_file[128]

sprintf( output_file, "utf8-%s", argv[1] )

FILE *of = fopen( output_file, "w" )

int n = fwrite( out, 1, outlen, of )

printf( "fwrite n = %d\n", n)

}

调用一下glib库.就好了

[TODO]BCM2835这货SoC是ARM1176JZF-S核,armv6z架构.

然后WebRTC默认的用的arm-linux-gnueabihf是armv7的架构...

所以,谁要编译的注意这个问题,手动添加编译链接的命令补丁,我先摸鱼去了.

首先,树莓派先要安装一堆依赖库:

sudo apt-get install libgtk-3-dev #gtk+-3.0,gmodule-2.0,gthread-2.0

sudo apt-get install libc6-dev #libm.so

sudo apt-get install libasound2-dev

sudo apt-get install libpulse-dev

然后,挂载树莓派TF卡到你的PC上来使用树莓派的rootfs

用gn gen生成构建项目脚本时请添加:

is_clang=false

target_os=liunx

target_cpu=arm

sysroot=(树莓派的root)/usr/lib/arm-linux-gnueabihf/

debug=false

treat_warningaserror????=false #禁止warning报错,自己放狗搜下是啥吧

其次魔改build/config那个啥啥的py文件添加(树莓派的root)/usr/lib/arm-linux-gnueabihf/pkg_config/

不然gn gen生成会失败.

最后就是有的编译会缺头文件,自行解决吧.

1.下载:

http://ftp.gnome.org/pub/gnome/binaries/win32/glib/2.12/glib-2.12.11.zip

http://ftp.gnome.org/pub/gnome/binaries/win32/glib/2.12/glib-dev-2.12.11.zip

这是别人已经编译好的GTK,一个是runtime,主要是 .dll,另一个是win32开发用的文件集。主要是.h和.lib文件。

2. 安装:

先安装好runtime,注意环境变量path要手动加入那些.dll所在的目录。然后再安装后者,把.h加入VC++6的"include files"比较麻烦。总之,在vc++6 menu->tools->options->directories里面的把所有安装完成后包含.h的目录,以及这个目录里面的子目录都加入"include files"就不会报错,如果报错,估计是少glibconfig.h等,这些在你安装目录下lib目录里面,你查查,而后,拷贝到.h或者把这些目录也加入"include files"都可。最后,把lib加入到 "library files"里面。

3. 测试:

建立一个工程。在project setting的link里面,去掉那些.lib文件,加入如下:

glib-2.0.lib gtk-win32-2.0.lib gdk-win32-2.0.lib gobject-2.0.lib gdk_pixbuf-2.0.lib gthread-2.0.lib gmodule-2.0.lib pango-1.0.lib intl.lib 。而后,在.cpp文件里面粘贴如下代码:

#include <gtk/gtk.h>

int main( int argc,char *argv[] ){

GtkWidget *window

gtk_init (&argc, &argv)

window = gtk_window_new (GTK_WINDOW_TOPLEVEL)

gtk_widget_show (window)

gtk_main ()

return 0

}

编译,如果有提示,在project setting的 c/c++里面删除一些stdafx.h等字样的参数。必要时查看一下cl.exe编译器的帮助


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/7568370.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-07
下一篇2023-04-07

发表评论

登录后才能评论

评论列表(0条)

    保存