开源脚本库
1 TinyC(TCC)
1.1 优点
1.1.1 速度快:直接x86汇编代码
1.1.2 标准C支持:支持标准的 ANSI C 语言,而且也支持 ISO C99 标准
1.2 缺点
1.2.1 编译麻烦:要使用mingw/msys编译成DLL再共VC使用
生成LIBTCC: 由于libtcc是基于linux的,为了能够生成window下的动态连接库,我们先要使用mingw/msys编译,然后用下面的语句生成dll。为了方便msvc使用,还需要再生成lib库用于链接。整个步骤如下:1) 生成DLLgcc -O2 -shared -Wall -Wl,--export-all-symbols -mpreferred-stack-boundary=2 -march=i386 -falign-functions=0 -fno-strict-aliasing -DTCC_TARGET_PE -DLIBTCC -o libtcc.dll tcc.c2) 生成defpexports libtcc.dll | sed "s/^_//" > libtcc.def3) 从def生成liblib /machine:i386 /def:libtcc.def由于c语言编程需要头文件和库,我们也需要在发布程序的时候带上include目录和lib目录,然后在主程序中指定该路径。
2 Ch
2.1 优点
2.1.1 产品化
2.1.2 资料比较多
2.1.3 带有ChIDE 开发环境
2.2 缺点
2.2.1 标准版和学生版免费
2.3 分类
2.3.1 Ch shell
2.3.1.1 实际是使用了 Embedded Ch(不能单独运行)
2.3.2 Embedded Ch
2.3.2.1 SDK最低测试到VS2005SP2
3 CINT
3.1 优点
3.1.1 专业、免费
3.2 缺点
3.2.1 超过288M的源码
3.2.2 超过2万2千个文件
4 lua系列
4.1 toLua++
4.1.1 缺点
4.1.1.1 由Lua派生,感觉就不好
4.1.2 优点
4.1.2.1 增加了C++类的访问操作函数
4.2 lua
4.2.1 缺点
4.2.1.1 脚本语言类Pascal
4.2.1.2 访问主程序C++对像较难
4.2.1.3 使用插件来更好的绑定代码:http://lua-users.org/wiki/BindingCodeToLua
4.2.2 优点
4.2.2.1 编译方法简单,VC6加载成功,源码较少
5 Squirrel
Squirrel是一个高级动态类型, 面向对象的语言, 提供了类和继承, 使用C风格. 同样, 它借鉴了Lua中的table. 它很容易编译, 而且看起来有高水平的文档. 尽管Squirrel是一门年轻的语言, 但是它以及被用在了一些商业程序中, 它有一个活跃的论坛.
5.1 缺点
5.1.1 使用Push和Pop栈管理参数表,很难理解
5.1.2 没有直接调用单独脚本中函数的功能,只能先整个执行一次
5.1.3 错误提示少,无法分析是什么原因不执行
5.1.4 中文文档帮助少
5.2 优点
5.2.1 类C语言
5.2.2 编译LIB应用到VC简单
6 ccscript
6.1 缺点
6.1.1 没有什么资料可查
6.2 优点
7 中文脚本zhScript
7.1 缺点
7.1.1 中文语法很怪
7.1.2 程序结构复杂
7.1.3 20M源码,1890多个文件
7.2 优点
7.2.1 中文语法
7.2.2 开源项目,免费
8 wagic
8.1 缺点
8.1.1 游戏用的脚本
8.2 优点
9 C--
9.1 缺点
9.1.1 似乎不是C脚本支持,而是个编译器
9.1.2 没有好的编译系统
9.2 优点
9.2.1 小巧的汇编前端分析程序,将程序转汇编代码
9.3 说明
9.3.1 来自于 http://www.cminusminus.org/
9.3.2 CMINUS是C语言的一个子集,该语言的语法在《编译原理与实践》第九章附录中有详细的介绍。
10 AngelScript
AngelScript是一门静态类型语言, C++风格. AngelScript拥有最好的原生支持bindings. 通常, 一个函数或者是类只需要注册到AS的虚拟机中, 就可以在AS脚本中使用了. 本文中的其他脚本语言都需要中间插件帮助才能实现函数的binding. 当然, 如果本地函数没有先注册的话, AS脚本也是编不过的. 这给那些想要预编译AS byte-code的人增加了一个额外步骤. AngelScript不支持table, 事实上这一点不会造成麻烦, 因为AS是静态类型脚本. AS拥有一个活跃的在线论坛, 漂亮的文档, 而且保持持续的更新.
10.1 缺点
10.1.1 使用VC6编译存在的问题
10.1.1.1 angelscript_2.24.0
10.1.1.1.1 库
10.1.1.1.1.1 OK
10.1.1.1.2 例子
10.1.1.1.2.1 console
10.1.1.1.2.1.1 scriptstdstring.cpp(55) : warning C4291(使用了new但是没有对应的delete?)
--------------------Configuration: msvc6 - Win32 Debug--------------------Compiling...main.cppscripthelper.cppscriptstdstring.cppd:\脚本程序设计\angelscript\angelscript_2.24.0\sdk\add_on\scriptstdstring\scriptstdstring.cpp(55) : warning C4291: 'void *__cdecl operator new(unsigned int,const struct std::nothrow_t &)' : no matching operator delete found; memory will not be freed if initialization throws an exception c:\program files\microsoft visual studio\vc98\include\new(36) : see declaration of 'new'Linking... Creating library ../../bin/console.lib and object ../../bin/console.expconsole.exe - 0 error(s), 1 warning(s)
10.1.1.1.2.2 concurrent
10.1.1.1.2.2.1 warning C4291 同console错误
10.1.1.1.2.2.2 调试
10.1.1.1.2.2.2.1 运行程序为DOS方式,直接关闭DOS方式程序,出现内存泄露
10.1.1.1.2.2.2.2 按回车退出程序,正常
10.1.1.2 angelscript_2.21.0
10.1.1.2.1 库
10.1.1.2.1.1 OK
10.1.1.2.2 例子
10.1.1.2.2.1 console
10.1.1.2.2.1.1 console.exe - 0 error(s), 0 warning(s)
10.1.1.2.2.2 concurrent
10.1.1.2.2.2.1 concurrent.exe - 0 error(s), 0 warning(s)
10.1.1.2.2.2.2 调试
10.1.1.2.2.2.2.1 运行程序为DOS方式,直接关闭DOS方式程序,出现内存泄露
10.1.1.2.2.2.2.2 按回车退出程序,正常
10.1.1.3 angelscript_1.10.1d
10.1.1.3.1 库
10.1.1.3.1.1 OK
10.1.1.3.2 例子
10.1.1.3.2.1 test_build_performance
10.1.1.4 angelscript_2.23.1
10.1.1.4.1 库
10.1.1.4.1.1 Debug
10.1.1.4.1.2 Debug with stats:4768的警告
10.1.1.4.1.3 Release
10.1.1.4.2 例子
10.1.1.4.2.1 console
10.1.1.4.2.1.1 console.exe - 0 error(s), 0 warning(s)
10.1.1.4.2.2 concurrent
10.1.1.4.2.2.1 concurrent.exe - 0 error(s), 0 warning(s)
10.1.1.4.2.2.2 调试
10.1.1.4.2.2.2.1 运行程序为DOS方式,直接关闭DOS方式程序,出现内存泄露
10.1.1.4.2.2.2.2 按回车退出程序,正常
10.1.1.5 angelscript_2.24.0a
10.1.1.5.1 库
10.1.1.5.1.1 Debug
10.1.1.5.1.2 Debug with stats:4768的警告
10.1.1.5.1.3 Release
10.1.1.5.2 例子
10.1.1.5.2.1 console
10.1.1.5.2.1.1 scriptstdstring.cpp(55) : warning C4291
10.1.1.5.2.1.2 scriptstdstring.cpp(55) : warning 4786
10.1.1.5.2.2 concurrent
10.1.1.5.2.2.1 编译
10.1.1.5.2.2.1.1 scriptstdstring.cpp(55) : warning C4291
10.1.1.5.2.2.1.2 scriptstdstring.cpp(55) : warning 4786
10.1.1.5.2.2.2 调试
10.1.1.5.2.2.2.1 运行程序为DOS方式,直接关闭DOS方式程序,出现内存泄露
10.1.1.5.2.2.2.2 按回车退出程序,正常
10.1.2 VC6 库编译时,有C4768警告,在编译程序时出现这个 C4291警告
10.1.3 从网站的更新记录来看,BUG很多,每次版本变化就有很多BUG解决
10.2 优点
10.2.1 带有各种编译器的工程文件,VC6直接应用
10.2.2 使用常见的C / C + +数据类型与宿主应用程序更有效的沟通
10.2.3 AngelScript是完全免费的,zlib的许可证下发布。
10.3 说明
10.3.1 来自于 http://www.angelcode.com/angelscript/
10.3.2 在线文档 http://www.angelcode.com/angelscript/sdk/docs/manual/index.html
11 微软的:VB JAVA-SCRIPT
11.1 缺点
11.1.1 微软的库支持
11.1.2 COM接口类开发
11.1.3 不喜欢VB和JAVA
11.2 优点
11.2.1 稳定,可靠,常用
12 Pawn
Pawn在这群语言中是个古怪的家伙, 我从它开始介绍 Pawn 小, 而且简单, 它使用C风格的语法, 而且只有一种数据结构, 叫做cell. 一个cell通常是一个integer, 但是它经过处理后也可以表示character, boolean, float. Pawn不支持struct 和class, 但是使用数组的"named position"来模拟struct. 在这篇文章中提到的所有语言中, Pawn是唯一一个将编译器和虚拟机完全分离的脚本. 当然, 它在编译期提供更多的检查. 所有的变量必须声明, 所有的本地函数必须前向声明. 这很好, 因为这些检查是在compile-time进行的, 避免了在run-time时对本地函数参数的检查. 我发现编译器也给出了考虑周到的警告信息, 比如它会警告你使用了不正确的缩进, 这样可以帮助你维持一致的编程风格, 防止意外错误. 对于它, 我唯一抱怨的地方就是, 在使用float类型常量的时候, 你必须写成0.5形式, 而不能是.5这个被认为是语法错误. Pawn有完整的文档和广泛的应用, 以及一个不太活跃的论坛. Pawn是我见过的最快的轻量级脚本语言. 我在游戏中使用Pawn来进行低级脚本编程, 包括角色和对象的动画.
12.1 说明
12.1.1 http://www.compuphase.com/pawn/pawn.htm
13 其它脚本库
13.1 种类
13.1.1 TinyScheme
13.1.2 GameMonkey
13.1.3 google V8 JAVA-SCRIPT
13.2 分析
13.2.1 比较分析文档 http://www.cnblogs.com/ringofthec/archive/2010/11/15/script1.html