AAuto0.60发布,支持直接执行C语言代码(TCC扩展库)
AAuto通过web窗体或web.script库,可以自由的与Javascript交互、非常方便。
在SVN最新版本中,又添加了TCC的支持库,可以在AAuto中直接执行C语言的代码,运行时编译,支持C语言与AAuto代码的自由交互,同样非常方便。
AAuto最新SVN版本:
svn://svn.ecranesoft.com/aauto
用户名与密码都是aauto
-------------------------------------------------------------------------------
//AAuto调用C语言函数
code_c = /****
#include <stdio.h>
#include <stdlib.h>
int func_c (const char *msg)
{
//打开控制台窗口
io_reopen();
printf( "Hello! 我是C语言代码\n收到AAuto传来的参数:%s\n",msg );
int num = 123; //C99
return num;
}
****/
import tcc;
//创建TCC编译器
vm = tcc();
//编译C源码
vm.compile(code_c);
//获取C函数
func_c = vm.getCdecl("func_c","byte(string msg)")
//调用C函数
var ret = func_c("测试一下")
io.print( "C函数返回值", ret )
//关闭C语言编译器
vm.close();
范例源码二 C语言调用AAuto函数:
-------------------------------------------------------------------------------
//C语言调用AAuto函数
code_c = /****
#include <stdio.h>
//该函数在C语言中声明,在AAuto中定义
const char *func_aau(int a,int b,int c);
int main ()
{
//调用AAuto函数
const char *ret = func_aau(1,2,3);
io_reopen();
printf("AAuto函数返回的值:%s\n",ret);
return 1;
}
****/
io.open();//打开控制台,默认编译错误等信息在控制台输出
import tcc;
//创建TCC编译器
vm = tcc();
//编译C源码
vm.compile(code_c);
//定义一个AAuto函数
aauto_func = function(a,b,c){
io.print( "我是被C语言代码调用的AAuto函数" )
io.print( "收到C语言传过来的参数",a,b,c)
return "Hello!"
}
//导入为C语言函数定义
vm.setCdecl(
aauto_func, //AAuto函数名字
"func_aau", //在C语言中调用的函数名字
"string(int a,int b,int c)" //函数原型,与C语言中的声明必须一致.
)
//链接并运行C语言main()函数
vm.run();
vm.close();
范例三: C语言编译器 窗口程序
-------------------------------------------------------------------
//TCC编译器
import win.ui;
import tcc;
/*DSG{{*/
var winform = win.form(parent=...; text="TCC编译器";right=577;bottom=507 )
winform.add(
txtCode={ bottom=444;right=551;left=14;multiline=1;top=19;z=1;text="//请在这里输入C语言代码";edge=1;cls="richedit" };
static={ bottom=481;align="right";text="启动参数:";left=19;top=463;transparent=1;right=74;z=4;cls="static" };
btnRun={ bottom=490;right=538;left=458;top=460;z=2;text="运行";cls="button" };
txtArg={ bottom=489;right=437;left=90;top=461;z=3;text="参数,参数2";edge=1;cls="edit" }
)
/*}}*/
winform.txtCode.text = /**
#include <stdio.h>
int main ( int argc, char *argv[] )
{
int i = 0;
io_reopen();
for( i=1;i<argc;i++){
printf( "%s \n" , argv[ i ] );
}
return 0;
}
**/
winform.btnRun.oncommand = function(id,event){
//创建TCC编译器
vm = tcc();
//编译C源码
try{
vm.compile(winform.txtCode.text);
//直接运行 main函数
vm.run(
table.unpack(
string.split(winform.txtArg.text,",")
)
);
vm.close();
}
catch(e){
io.open()
io.print(e);
}
}
winform.show()
win.loopMessage();
在SVN最新版本中,又添加了TCC的支持库,可以在AAuto中直接执行C语言的代码,运行时编译,支持C语言与AAuto代码的自由交互,同样非常方便。
AAuto最新SVN版本:
svn://svn.ecranesoft.com/aauto
用户名与密码都是aauto
DBANK下载:AAuto0.60.rar
范例源码一 AAuto调用C语言函数:
-------------------------------------------------------------------------------
//AAuto调用C语言函数
code_c = /****
#include <stdio.h>
#include <stdlib.h>
int func_c (const char *msg)
{
//打开控制台窗口
io_reopen();
printf( "Hello! 我是C语言代码\n收到AAuto传来的参数:%s\n",msg );
int num = 123; //C99
return num;
}
****/
import tcc;
//创建TCC编译器
vm = tcc();
//编译C源码
vm.compile(code_c);
//获取C函数
func_c = vm.getCdecl("func_c","byte(string msg)")
//调用C函数
var ret = func_c("测试一下")
io.print( "C函数返回值", ret )
//关闭C语言编译器
vm.close();
范例源码二 C语言调用AAuto函数:
-------------------------------------------------------------------------------
//C语言调用AAuto函数
code_c = /****
#include <stdio.h>
//该函数在C语言中声明,在AAuto中定义
const char *func_aau(int a,int b,int c);
int main ()
{
//调用AAuto函数
const char *ret = func_aau(1,2,3);
io_reopen();
printf("AAuto函数返回的值:%s\n",ret);
return 1;
}
****/
io.open();//打开控制台,默认编译错误等信息在控制台输出
import tcc;
//创建TCC编译器
vm = tcc();
//编译C源码
vm.compile(code_c);
//定义一个AAuto函数
aauto_func = function(a,b,c){
io.print( "我是被C语言代码调用的AAuto函数" )
io.print( "收到C语言传过来的参数",a,b,c)
return "Hello!"
}
//导入为C语言函数定义
vm.setCdecl(
aauto_func, //AAuto函数名字
"func_aau", //在C语言中调用的函数名字
"string(int a,int b,int c)" //函数原型,与C语言中的声明必须一致.
)
//链接并运行C语言main()函数
vm.run();
vm.close();
范例三: C语言编译器 窗口程序
-------------------------------------------------------------------
//TCC编译器
import win.ui;
import tcc;
/*DSG{{*/
var winform = win.form(parent=...; text="TCC编译器";right=577;bottom=507 )
winform.add(
txtCode={ bottom=444;right=551;left=14;multiline=1;top=19;z=1;text="//请在这里输入C语言代码";edge=1;cls="richedit" };
static={ bottom=481;align="right";text="启动参数:";left=19;top=463;transparent=1;right=74;z=4;cls="static" };
btnRun={ bottom=490;right=538;left=458;top=460;z=2;text="运行";cls="button" };
txtArg={ bottom=489;right=437;left=90;top=461;z=3;text="参数,参数2";edge=1;cls="edit" }
)
/*}}*/
winform.txtCode.text = /**
#include <stdio.h>
int main ( int argc, char *argv[] )
{
int i = 0;
io_reopen();
for( i=1;i<argc;i++){
printf( "%s \n" , argv[ i ] );
}
return 0;
}
**/
winform.btnRun.oncommand = function(id,event){
//创建TCC编译器
vm = tcc();
//编译C源码
try{
vm.compile(winform.txtCode.text);
//直接运行 main函数
vm.run(
table.unpack(
string.split(winform.txtArg.text,",")
)
);
vm.close();
}
catch(e){
io.open()
io.print(e);
}
}
winform.show()
win.loopMessage();