mono下eglib工具库

eglib

glib是c语言跨平台底层工具(函数)库.glib主要提供字符串自动扩容/动态数组/链表/哈希表/树等功能.eglib是基于glib的独立实现.

这里只是了解一下eglib,有一个整体的认识.在mono中的类型都是使用eglib封装过的类型,以g开头.为更好的了解mono.做准备.

准备工作

分别从mono生成lib目录中,拷贝eglib.lib静态库.在eglib源码拷贝几个头文件.
头文件分别为:
  1. glib.h
  2. eglib-config.h.in
  3. eglib-config.hw
  4. eglib-remap.h

在VS中配置,头文件目录和引用库目录

头文件目录设置为当前项目所在目录.
设置eglib头文件所在的目录
引用库目录也设置当前项目所在目录.
设置eglib静态库所在的目录
设置编译器链接,依赖项加入eglib.lib
设置项目链接依赖项中加入eglib.lib静态库

GString的使用,可以像c#/Java一样,拼接内容

#include <stdio.h>

#include "glib.h"    //引用头文件


int main(int argc, char* argv[])
{
	//GString结构定义
	/*typedef struct {
		char *str;	     //存储字符串指针
		gsize len;           //字符串内容长度
		gsize allocated_len; //分配空间大小
	} GString;*/

	GString* str = monoeg_g_string_new(NULL);   //创建字符串指针

	g_string_append(str, "hello eglib\n");	    //往字符串追加字符串,如果空间不够,自动扩容 
	g_string_append(str, "hello mono");

	g_print("%s\n", str->str);
	g_print("内容长度:%d 占用空间:%d\n", str->len, str->allocated_len);


	GString* truc_str = g_string_truncate(str, 5); //截取生成一个新的字符串
	g_print("%s\n", truc_str->str);

	g_string_free(str, TRUE);		      //根据字符串指针释放内存

	return 0;
}

使用eglib字符串拼接效果

主要学习eglib中GString简单使用.其他的就在mono源码中学习其他使用.如hashtable(哈希表)等.

秋风 2018-05-28