• 想要了解一些常用的脚本引擎优缺点,便于在后续的项目中使用


    1 chaiscript,这个是昨天找到的,只编译了一个demo程序,感觉编译速度有点慢,帮助文档不是很全,不过总体来说没有细用,不好评论;

    2 anglescript, http://www.angelcode.com, 这个文档似乎还可以,但是也没有细用;

    3 lua, http://www.lua.org/, 这个似乎在游戏开发界用到比较多, 用的多人气就旺, 就越稳定,据说暴雪也是用它,而且和c++结合的也还不错,脚本本身的语法也是类c的,可以考虑重点学习一下,下面是往上找到一个介绍,就数遍帖一下:

    Lua 是一个小巧的脚本语言。作者是巴西人。该语言的设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。它的主页是 www.lua.org。
      Lua最著名的应用是在暴雪公司的网络游戏WOW中。
      Lua脚本可以很容易的被C/C++代码调用,也可以反过来调用C/C++的函数,这使得Lua在应用程序中可以被广泛应用。不仅仅作为扩展脚本,也可以作为普通的配置文件,代替XML,Ini等文件格式,并且更容易理解和维护。
      Lua由标准C编写而成,代码简洁优美,几乎在所有操作系统和平台上都可以编译,运行。
      一个完整的Lua解释器不过200k,在目前所有脚本引擎中,Lua的速度是最快的。这一切都决定了Lua是作为嵌入式脚本的最佳选择。
      Lua 有一个同时进行的JIT项目,提供在特定平台上的即时编译功能,这将给Lua带来更加优秀的性能。请访问 http://luajit.org/来了解这个项目。
      和Python等脚本不同,Lua并没有提供强大的库,这是由它的定位决定的。所以Lua不适合作为开发独立应用程序的语言。不过Lua还是具备了比如数学运算和字符串处理等基本的功能。
      Lua 目前的最新版本是 5.1.
      1 目标
      LUA的目标是成为一个很容易嵌入其它语言中使用的语言。大多数程序员也认为它的确做到了这一点。
      很多应用程序使用LUA作为自己的嵌入式脚本语言,以此来实现可配置性、可扩展性。这其中包括魔兽世界、博德之门等。
      2 特性
      LUA有如下特性:
      轻量级 LUA语言的官方版本只包括一个精简的核心和最基本的库。这使得LUA体积小、启动速度快,从而适合嵌入在别的程序里。
      可扩展 LUA并不象其它许多"大而全"的语言那样,包括很多功能,比如网络通讯、图形界面等。但是LUA可以很容易地被扩展:由宿主语言(通常是C或C++)提供这些功能,LUA可以使用它们,就像是本来就内置的功能一样。
      其它特性 LUA还具有其它一些特性:同时支持面向过程编程和面向对象编程;自动内存管理;提供一系列数据结构,包括数组、链表、集合、字典、散列表等;语言内置正则表达式匹配;闭包(closure);函数也可以看做一个值;提供多线程支持;等等。 
     
    4 如何在C++中集成Lua脚本(LuaPlus篇): http://win.chinaunix.net/bbs/thread-113954-1-1.html
    5 forcal,有一个脚本语言,http://www.forcal.net/, 这个似乎面向的高性能数值软件开发,不是我想要的
    6 如何在vc中使用lua

     一、Lua静态库
      编译为静态库很简单,有人已经写过,现摘录如下:
      Lua 包含core lib和standard lib,详细情况可以查阅文档,为了简单起见,我们将其放到一个lib中,我们需要建立一个静态库的工程,然后将其源文件加入到工程中,包含以下文件
       core lib: lapi.c lcode.c ldebug.c ldo.c ldump.c lfunc.c lgc.c llex.c lmem.c lobject.c lopcodes.c lp***r.c lstate.c lstring.c ltable.c ltests.c ltm.c lundump.c lvm.c lzio.c
      standard lib: lauxlib.c lbaselib.c ldblib.c liolib.c lmathlib.c ltablib.c
       lstrlib.c loadlib.c
      并将其输出路径设置到lib下
      二、Lua动态库
      编译动态库,首先需要修改一下Lua.h头文件。如下:
      /* mark for all API functions */
      //#ifndef LUA_API
      //#define LUA_API extern
      //#endif
      #ifdef LUA502_EXPORTS // 根据自己的项目而定
       #define LUA_API __declspec(dllexport)
      #else
       #define LUA_API __declspec(dllimport)
      #endif
      然后用vc建立一个win32 dll,包含*.h和*.c文件(参考一),编译即可。

  • 相关阅读:
    python3使用django1.11不支持MYSQL-python的解决办法
    abp学习目录
    日常网站整理
    C#使用TransactionScope实现事务代码
    CSS禁止选择
    数据库三种事务
    设计模式总章
    几种排序方法的总结
    将图片压缩成大小格式小的图片
    常用的wsdl地址
  • 原文地址:https://www.cnblogs.com/strinkbug/p/1752654.html
Copyright © 2020-2023  润新知