tcc是一个支持windows和linux环境的C语言编译器。它也可以将代码编译之后直接嵌入到进程中,这就具有脚本的相关特性了,但它却不是解释执行的。
tcc将C源码编译称机器码,然后分配一块内存,将机器码写在这块内存中,宿主进程可以调用源码中所定义的函数,源码也可以调用宿主进程提供的函数,交互还是相当灵活的。
我们可以将tcc源码编译称DLL(就直接用TCC自己编译自己,网上有具体的方法),这里只简单介绍一下如何将tcc.dll加入到我们的工程中,以此为我们的工程增加脚本功能,步骤如下:
包含头文件,导入库文件,这就不多说了
1.创建编译环境(包括状态、符号表等等的初始化)
TCCState *s=::tcc_new();
if(s==0)
{
printf("can not create compile environment\n"); return 0;
}
2.设置错误处理回调函数
::tcc_set_error_func(s,NULL,call_back_func_addr);
3.设置头文件和库文件目录
::tcc_add_sysinclude_path(s,"tcc/include");
::tcc_add_sysinclude_path(s,"tcc/include/winapi");
::tcc_add_sysinclude_path