脚本没有类似C语言的预编译,开源脚本库

开源脚本库

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值