kenlistian

勤学多思

  IT博客 :: 首页 :: 新随笔 ::  :: 聚合  :: 管理 ::
  412 随笔 :: 0 文章 :: 23 评论 :: 0 Trackbacks

#

1 和java的JVM类似,Adobe AIR 需要安装. http://get.adobe.com/cn/air/

    http://labs.adobe.com/technologies/air/samples/

2 air开发工具  目前是Flex Builder3
    3 Adobe AIR简介
      又是一个虚拟机.
     AIR 允许你使用最熟悉的开发环境,选取你最擅长的工具进行开发。比如
    * Flash / Flex / ActionScript
    * HTML / JavaScript / CSS / Ajax

所以AIR应用程序可以
    * 基于Flash或者Flex,即应用程序的容器是Flash或Flex(swf)
    * 基于包含HTML或PDF的Flash或Flex,即应用程序的容器是Flash/Flex,内含HTML或PDF
    * 基于HTML,应用程序的容器是HTML,JS,CSS
    * 基于包含FLASH/FLEX或PDF的HTML,即容器是HTML,内含FLASH/FLEX,PDF。

posted @ 2009-03-27 18:27 kenlistian 阅读(159) | 评论 (0)编辑 收藏

老套, 该管家婆一旦数据量过大,到达9999,19999,29999左右就会不稳定,搞不好就下次登录就弹出数据破坏. 由于是帮人,不得不搞,现在进销存软件多,但是也有人钟情这套. 出现这个问题,在网上搜到2个工具,按方法修复.其中要恢复前,把sysdata.dbf中的stocknum字段从0该为1. 如果有foxpro改当然可以.没有,直接搞个二进制编辑工具改把以上30改31.用excel改的话,也许用工具修复后怕进 不去.

附:修复工具tools.rar

posted @ 2009-02-12 18:00 kenlistian 阅读(756) | 评论 (2)编辑 收藏


Puppy Linux 是个相当小巧的 Linux 发行版,
    只有几十MB的大小,
    带了大量的描扫仪、打印机、数码相机的驱动以及
    音乐录制/编辑/转换软件。

Puppy Linux 麻雀虽小,但五脏俱全.在Puppy Linux 中系统工具、网络软件、办公应用、影音娱乐都一个都不会少的。Puppy Linux 甚至还包含了一个完整的办公环境。
Puppy 几乎能在所有的硬件上运行。的确小巧是 Puppy Linux 最大的特色,整个Puppy Linux 可以装载在内存中。

下载
 Puppy Linux 4.1.2 Puppy 4.1.2 同样提供了两个不同内核的版本
kernel 2.6.25.16 (94.6MB) 
puppy-4.1.2-k2.6.25.16-seamonkey.iso
kernel 2.6.21.7 (94.6MB)
puppy-4.1.2retro-k2.6.21.7-seamonkey.iso

------
ubuntu 7.10也能在U盘上跑,但是u盘得2g上,且速度慢。
还是几百兆就可以了。

posted @ 2009-01-09 17:48 kenlistian 阅读(342) | 评论 (0)编辑 收藏


 声明接口
        IMyInterface = interface(IInterface)  
         ['{63E072DF-B81E-4734-B3CB-3C23C7FDA8EA}']  
              function GetName(const str: String): String; stdcall;
              function QueryInterface(const IID: TGUID; out Obj): HResult; stdcall; 
              function _AddRef: Integer; stdcall;  //使接口引用数加1。
              function _Release: Integer; stdcall;  //使接口引用数减1,当小于等于0时作释放动作。
        end;
            
说明:如果有继续关系则在括号里填父接口,否则省却,如:IMyInterface = interface这样就行。
说明:GUID可选,如要实现具有COM特性的接口则需要加上
             zc:接口GUID,最好加上,最好分离功能及其封装。

接口中所有的数据成员都是public访问限制,数据成员指定其为不能私有或其他的域成员。
接口中的方法只能有声明,看上去像没有构造和析构方法的纯虚类。


type
  IInterface = interface
    ['']
    function QueryInterface(const IID: TGUID; out Obj): HResult; stdcall;
    function _AddRef: Integer; stdcall;
    function _Release: Integer; stdcall;
end; 

  该接口实现了QueryInterface,_AddRef,_Release,凡是继承于该接口,则不需要声明
该三个虚函数。
  在实现新接口的类中,也要从TInterfacedObject 后继承,原因在于该类实现以上函数的
实现部分,不要考虑QueryInterface等完成。如下:
type
  TNewInterfaceClass = class(TInterfacedObject, INewInterface)
   ...
end;



 
接口的实现
         接口服务是由类来实现的。
                TIntfClass = class(TObject, IMyInterface)
                private
                    FCounter: Integer;
                    FRefCount: Integer;
                public
                    function QueryInterface(const IID: TGUID; out Obj): HResult; stdcall;
                    ...
                end;
 
获取接口
    a. 使用类型转换。 
        如:var aIntf: IMyInterface;
               begin
                       aObj := TIntfClass.Create;
                        try
                            aIntf := (IMyInterface(aObj);
                                ...
    b. 利用Delphi编译器内建机制。 如:aIntf := aObj。
    c. 利用对象的QueryInterface方法。
           如
                 OleCheck(aObj.QueryInterface(IID, aIntf)); 只能存取有GUID的COM接口。
   d. 利用as操作符。
         使用as操作符必须符合下面条件:
    1.接口要从IInterface接口继承下来。
    2.有GUID值
      在Delphi7中接口的实现类还必须是从TInterfacedObject继承下来才行,
      如  TIntfClass = class(TInterfacedObject, IMyInterface)
       zc: 最好用该方法,考虑使用接口有其他语言开发l情况下的使用。
 
接口和对象生命期             
  对接口直接=nil即可,freeAndNil则不需要。因接口特性,会计数减少1
 
 
接口的委托(Interface Delegation)
 分为两种:
1. 对象接口委托   
2. 类对象委托。
(略)
posted @ 2009-01-04 16:16 kenlistian 阅读(1515) | 评论 (0)编辑 收藏

一般用dspack开发directshow

1.从工程文件以dll方式建立filter工程,在工程头加上如下

uses
  BaseClass,
  xxx.pas;   //编写filter单元的文件,套加

{$E ax}      //编译出.AX格式文件

exports      //导出Filter相关的函数,定义在BaseClass.Pas
  DllGetClassObject,
  DllCanUnloadNow,
  DllRegisterServer,
  DllUnregisterServer;

begin
end.

2.创建单元文件main.pas,下面基本可以照套.

unit main;
interface
uses BaseClass, ActiveX, DirectShow9, Windows;

{DirectShow9 定义了各种DirectShow基本接口和类型,
  BaseClass  实现了各种接口的基类}


const
  CLSID_MyClass : TGUID = '{90A70CF4-A445-4211-B962-308054E93023}';

  //定义Filter媒体类型和Pin的属性,这里是演示TransformFilter如下:
  MyPinTypes : TRegPinTypes =
              (clsMajorType: @MEDIATYPE_NULL;
               clsMinorType: @MEDIASUBTYPE_NULL);

  MyPins : array[0..1] of TRegFilterPins =
      ((strName: 'Input';  bRendered: FALSE; bOutput: FALSE; bZero: FALSE;
        bMany: FALSE;     oFilter: nil;              strConnectsToPin: nil;
       nMediaTypes: 1;    lpMediaType: @MyPinTypes),
       (strName: 'Output'; bRendered: FALSE; bOutput: TRUE;  bZero: FALSE;
        bMany: FALSE;      oFilter: nil;            strConnectsToPin: nil;
       nMediaTypes: 1;     lpMediaType: @MyPinTypes));

 

  //从基类TBCTransInPlaceFilter派生出一个TransformFilter,
  // TBCTransInPlaceFilter支持数据的"就地"处理,从这个基类派生出新的Filter,
  // 只要实现function Transform(Sample: IMediaSample): HRESULT;
  // function CheckInputType(mtin: PAMMediaType): HRESULT
  //这两个虚函数就可以使用了


type
  TMyClass = class(TBCTransInPlaceFilter)
     function Transform(Sample: IMediaSample): HRESULT; override;
     function CheckInputType(mtin: PAMMediaType): HRESULT; override;
  end;

implementation


function TMyClass.CheckInputType(mtin: PAMMediaType): HRESULT;
begin
 // 这里是检测mtin的媒体类型,如果跟我们所要的是一样,我们就返回S_OK,否则返回S_False,
  //if IsEqualGUID(mtin.majortype, MEDIATYPE_Video) and IsEqualGUID(mtin.subtype, MEDIASUBTYPE_RGB24) then    
  //   result := S_OK else result := S_False;
  result := S_OK;
end;

function TMyClass.Transform(Sample: IMediaSample): HRESULT;
begin
  //这里就是我们实现对Sample的数据进行处理的代码,可以是视频的处理,
  //可以是音频的处理,要看输入PIN(MyPinTypes)是什么样的媒体类型
  result := NOERROR;
end;

 


initialization

//类工厂注册Filter的一些信息,
//  第一个参数是Filter本身的实现对象TMyClass,
//  第二个参数是Filter的名字'MyFilter',
//  第三个参数是Filter的GUID CLSID_MyClass,
//  第四个参数是注册Filter的类型,
//  第五个参数是Filter的Merit值,这个值如果设得高的话,智能连接里被使用率就要高,
//  第六个参数是PIN的个数,这里一个输入PIN一个输出PIN,所以是2,
//  最后一个参数是PIN的类型属性,就是上面定义的MyPins数组

  TBCClassFactory.CreateFilter(TMyClass, 'MyFilter', CLSID_MyClass,
    CLSID_LegacyAmFilterCategory, MERIT_DO_NOT_USE, 2, @MyPins);
end.


调试FIlter
  1. 先注册.用regsvr32
  2. 在Run Parameters里的Host Application里设置Graphedt.exe的路径,
  3. Run
    如果跟不进去,则在工程文件编译开关中加入debug宏(或定义在工程文件中)
    还跟不进去的话,估计是在工程管理中有多个工程,在工程管理中只能有
    一个工程。(不知道是delphi7的问题还是其他,反正我机子上是不能在多工
   程文件下跟进去。怪)
 

posted @ 2009-01-04 11:29 kenlistian 阅读(2389) | 评论 (0)编辑 收藏

X,X11 的意思(汇总)

 
   X是协议,不是具体的某个软件,

   X并不是UNIX核心的一部分,而是在核心之上的一个应用程序。X提供一种协议,用来产生图形用户界面GUI。
  X不会负责很多事情,它只负责绘制 (Drawing),移动窗口(Moving windows),和鼠标、键盘交互。
  X11 是 Unix 事实上的图形系统标准。Linux,各种 BSD 版本和多数的商用 Unix 都采用它,
   CDE,KDE 和 GNOME 等桌面环境都运行在它之上。
  
     在Linux使用的是一个叫XFree86的免费X11实现来提供相同的功能。不过由于一些License的问题,
   现在 X11的实现已经变成XOrg了。在Linux里面可以到/etc/X11/xorg.conf看到其配置文件。

    X11R6   是 X Protocol version 11 Release 6     
   (X协议第11版第六次发行)的意思,就是说目前用的X协议是第11版的,然后经过了6次小的修正.
    不同版本的X协议是不能通信的.现在的X服务器软件和X应用程序都遵循X11R6.     

    XFree86 3.3.6 XFree86 4.3.6等这些版本是实现X协议的软件XFree86的版本号.
    以上为协议版本和实现协议的软件的版本的区别.


1.   XFree86  
  
    如果你对你的显卡了解很清楚,   可以直接开始,   要不然先用SuperProbe测一下你的显卡的
   芯片,   把型号稍微记一下,   省得呆会儿麻烦.   假如你的显卡很新的话,    最好用最新版本, 对新
    显卡支持得好一些.   XFree86的好处是各种distribution一般都带,   还有好多不同OS的版本, 
   可以在安装时就装上配置   
  
    X11和XFree86的关系,   现在的X   Window   System由The   OpenGroup负责开发(X11R6.4),
     X11R6主要由X11的库和sample   X11   clients组成,   而XFree86主要就是开发i386上的
    X   Server(与硬件相关的).   但在它们distribute时都集成在一起了,
      如X11R6.4带了XFree86   3.3的Server,   而XFree86中也把X11R6的lib/clients集成在   
    一起了   
  
    XFree86   Servers基本上就是分XF86_Mono(单色),   XF86_VGA16(16色VGA),   XF86_SVGA   
    (256色或更多),   XF86_Accel(加速卡,   如Mach*,   S3*等)等几类.   XFree86   Server的   
    特点就是一个很大的ELF文件(2M左右),   /usr/X11R6/bin下以XF86_打头的就是了,   
    然后一般是将X做个符号连接到你当前的X   Server上.   
  
    XFree86的配置有这几个(注意大小写):   
    (1)   基于命令行的xf86config   
      是纯命令行的,   一般安装X时都会装上,   按其提示一步步走就可以了   
      但由于没有Back功能,   选错了只好重来
  
    (2)   图形界面的XF86Setup   
      XF86Setup是个GUI的配置工具,   第一次开始时需要VGA16   Server(你总得有个default   
      X   Server才能有GUI吧?),   比xf86config稍微好用一些,   好歹是GUI的
  
    (3)   基于dialog的Xconfigurator   
      假如用RedHat的话,   还有一个文本方式下基于对话框的也不错,   就是Xconfigurator   
      这个东西挺方便的,   安装RedHat时就是用它配的
  
    这些工具作用就是生成一个Server的配置文件XF86Config.   其实关键是要支持   
    你的显卡硬件,   这个通了,   XF86Config就好办了,   改改总能对的.   要注意这个文件存放   
    的地方,   RedHat是/etc/X11/XF86Config,   Debian/Slackware是/etc/XF86Config.  
     它的 结构也是很清楚的,   就是搞得有点太复杂了,   你也可以手工编辑它来修改.   如你想改   
    Virtual   Screen,   那就查Virtual(vi下/Virtual),   然后找到与你的Server对应的   
    Virtual改了就行了,   还有分辨率什么的,   都可手动改   
  
  
    2.   Accelerated   X   4.1    
  
    假如你的显卡特新(如AGP),   那XFree86也许就不行了,   用Accelerated   X   4.1吧,   这是   
    个很不错的commercial   X   Server,   但已经有crack了.   它的最大好处在于其网页上不断   
    地会有最新显卡的updates,   而且都是免费download的!  它的安装就比XFree86简单多了,  
    解开tgz,   看一下README,   运行安装程序,   输入serial就OK
  
    AX的程序装在/usr/X11R6/lib/X11/AccleratedX   下面,   它很模块化的,   显卡,   显示器,   
    键盘,   鼠标几部分,   不象XFree86那样搞成一个大的ELF文件.   另外它的两个可执行文件   
        /usr/X11R6/bin/下面:   Xaccel(Server)   Xsetup(配置程序)   
  
    它的config文件放在/etc/Xaccel.ini中,   只有很短的几行,   比XF86Config清晰简单多了   
    运行Xsetup时可加参数-text/graphics来分别进文本/GUI配置环境,   不加参数它检测是   
    否有/etc/Xaccel.ini来进不同环境.   
  
  3.   MetroLink   X   Server   
  
    MetroX   Server在Official的RedHat和InfoMagic的CD中是带的,   安装时可以选择   
    安装它或XFree86   Server.   程序都装在/usr/X11R6/lib/X11/Metro下面,   也是模块化的.   
    但这个Metro   X   Server感觉没有AX   4.1支持的显卡新,   但也有它的用处(如我的老   
    S3   868在AX   4.1上只有256色,   而用MetroX就有16bit色了   *_*)   
  
    可执行文件   /usr/X11R6/bin/下面:   Xmetro(Server)   configX(配置程序)   
    那个configX是个Motif界面的GUI配置程序,   会自动启动VGA方式的Xmetro   Server   
    来运行   
  


Window Manager
在多数图形环境中,窗口边框的外观(标题栏,关闭按钮,等)如何显示是由系统定义的。
X11 则不是这样。在 X11 中,窗口的框架(也称为"装饰")是由一个称为窗口管理器的单独程序提供的。
一般认为,窗口管理器只是另外一个客户程序;它用通常的办法启动,并与 X 服务器按同样的方法通信。
有很多不同的窗口管理器供我们选择。

WM的功能可以用简单的一个词来概括--中转。比如一个程序要求X11绘制一个窗口,这个请求会首先被重定向到WM,
WM来确定如何绘制窗口的标题栏(caption)和边框(Frame),在X系统中,这两个元素是由WM决定的。
因此用户在窗口上拖拉和缩放也是由WM来做出反应。大多数WM还支持窗口最小化,也就是变成一个在窗口底部的图标。
这项工作不属于X系统核心协议之列,因此是一些WM自己实现的。

大多数WM还处理一些其他的任务,比如显示根窗口(root window),这个就是Linux里面的桌面,和windows的桌面是topmost window
同样的概念。WM还处理在根窗口上的键盘和鼠标操作,比如Alt-F4关闭窗口之类的功能。


GNOME,KDE,xFce等
这些都是桌面环境(Desktop Envrionment),他们运行于WM之上,提供更完善的桌面集成功能,更自由的定制操作系统使用方式。
X上面的桌面环境与windows,Mac OS X等不同,它可以自由组合,自由更改。
大多数的DE由窗口管理器(WM),文件管理器(FM),一组主题(Theme)与其他用来管理桌面的程序和库组成。

 KDE和GNOME是LINUX里最常用的图形界面操作环境.

 KDE是K Desktop Environment 的缩写.他不仅是一个窗口管理器,还有很多配套的应用软件和方便使用的桌面环境,比如任务栏,
开始菜单,桌面图标等等.     
 GNOME是GNU Network Object Model Environment的缩写.和KDE一样,也是一个功能强大的综合环境.     
  另外在其它UNIX系统中,常常使用CDE作为这样一个环境.      

-- KDE项目是两年前由德国自由程式员发起的,他们采用了挪威Troll Tech软件公司的Qt图像界面库作为基础研发平台,
C++为主要研发语言。然而,因为KDE使用的Qt库所遵循的软件版权协议QPL并不是真正的免费软件协议,以纯免费软件构成
的Linux发行版Debian就拒绝使用KDE。当然,最终用户并不太关心软件许可问题,对他们来说易用性和强大的功能是最重要的。
因此,KDE还是得到了广泛的应用。

----
为了和KDE相抗衡,世界最大的免费软件组织GNU(即免费软件基金会)发起了GNOME桌面环境项目。----
和KDE不同,GNOME采用了符合GPL免费软件协议的GDK、GTK作为其底层研发平台,也就是说GNOME是真正意义上的GPL
免费软件
---- GNOME在GTK的基础上扩充了许多额外的功能,研发了一系列GNOME程式通用的函数库和程式,因此具有统一的界面风格和使用习惯。
----
为了实现各个软件之间甚至基于网络的组件复用,GNOME采用了通用的CORBA组件模型,而KDE虽然前期也采用了CORBA技术,但后来由于速度和复
杂性等原因,逐渐转而采用了自己独有的KPart组件模型。这使得KDE在和其他软件的兼容性方面大打折扣。GNOME由于坚持使用CORBA,使得他在
这方面具有相当大的优势。为了更好地使用CORBA模型,GNOME在ORBit(一套轻量级的CORBA实现)基础上研发了Bonobo组件层,不仅简
化了编程工作,而且实现了灵活的组件复用。GNOME甚至能够通过网络使用其他平台下的CORBA组件。这一点真正体现了GNOME名称的精髓所在。





posted @ 2008-11-03 11:37 kenlistian 阅读(939) | 评论 (6)编辑 收藏


命令如下:
1.   sudo apt-get build-dep gcc
    
     该命令apt-get build-dep (packagename) 表示安装相关的编译环境。

2.   sudo apt-get install build-essential
  

    安装完既可以在终端敲击gcc,如果报没有该命令,估计是gcc-3.3,可以修改文件名    为gcc.

   如下:

    mv /usr/bin/gcc-3.3 /usr/bin/gcc
    mv /usr/bin/g++-3.3 /usr/bin/g++
    一切OK了。

posted @ 2008-11-02 20:07 kenlistian 阅读(1869) | 评论 (0)编辑 收藏

理解Upvalues

把它理解为一个与C static变量等价的东西即可。


如下函数:
 
 static int counter(lua_State* L);

 int newCounter(Lua_State* L){
   lua_pushnumber(L, 0);
   lua_pushcclosure(L, &counter, 1);
   return 1;
  }

  其中调用lua_pushcclosure 函数,就是创建了一个闭包函数,
  即在该counter函数中,可以使用由
      lua_pushnumber  压入的初始值0。
  其中压入一个upvalues值,则在pushcclosure第三个参数个数则为1.

  在函数中
  static int counter (lua_State *L)
  {
     double val = lua_tonumber(L, lua_upvalueindex(1));
     lua_pushnumber(L, ++val); 
     lua_pushvalue(L, -1);        /* duplicate it */
     lua_replace(L, lua_upvalueindex(1));
     return 1;
  }

  lua_upvaluesindex(1) ,就是取出upvalues值,其索引为第一个参数。
  由于这个参数并不是堆栈中索引,而是仅仅表示参数序位的索引,即,取出
  upvalue的当前值。 
  







 

 


posted @ 2008-10-27 16:56 kenlistian 阅读(1021) | 评论 (0)编辑 收藏

这个是lua中需要理解的概念,以前写过关于元表的笔记,好久没摸,又忘了。


元表概念 ( Metatable)
  元表由键名为 事件 (event) 和其中的值叫作元方法 (metamethod)组成。
 
  在lua中每个值都有一个元表。而table和userdata所定义的值允许自定义对应的元表,
  其他都是用统一的元表。

  我的理解,元表,其实有点类似值的属性的味道。

对元表的操作
getmetable 查询元方法
setmetable 替换元方法。

metatable 包含几个固定的元方法.
   其事件名由下划线 '__' 前缀的字符串组成。

"add": + 操作。
"sub": - 操作。 其行为类似于 "add" 操作。
"mul": * 操作。 其行为类似于 "add" 操作。
"div": / 操作。 其行为类似于 "add" 操作。
"mod": % 操作。 其行为类似于 "add" 操作,它的原生操作是这样的 o1 - floor(o1/o2)*o2
"pow": ^ (幂)操作。 其行为类似于 "add" 操作,它的原生操作是调用 pow 函数(通过 C math 库)。
"unm": 一元 - 操作。
"concat": .. (连接)操作,
"len": # 操作。
"eq": == 操作。
a ~= b 等价于 not (a == b) 。
"lt": < 操作。
"le": <= 操作。
a >= b 等价于 b <= a 。注意,如果元方法 "le" 没有提供,Lua 就尝试 "lt" ,它假定 a <= b 等价于 not (b < a)

"index": 取下标操作用于访问 table[key] 。
"newindex": 赋值给指定下标 table[key]= value 。
"call": 当 Lua 调用一个值时调用。


以上事件中,index 和newindex 很关键,常常被自定义的函数所取代。

如:定义一个函数取代环境中的处理
local f = function (t,i)
  error("cannot redefine global variable `"..i.."'",2)
end

local g = {}
local G = getfenv()
setmetatable(g,{__index=G,__newindex=f})

--设置g的运行环境
setfenv(1,g)
rawset(g,"x",3)

x=2
y=1 -- cannot redefine 'y'

以上的替换只能在C下改变,在lua中不能中改变其它任何类型的值的 metatable(debug 库例外);

值得说明的是:
table 和userdata类型拥有独立的 metatable (也可以共享一个相同的表作它们的 metatable)

在lua的扩展库函数中有一个
luaL_newmetatable
这个函数是创建一个表,作为元表提供给userdata使用。
(userdata,可以理解为自定义的一个数据结构。)





posted @ 2008-10-19 14:44 kenlistian 阅读(3895) | 评论 (0)编辑 收藏

 下面的这些内容不包含在本文中:
官方的Lua包和文档 (参看 http://www.lua.org/),
涉及到Lua使用但不是被Lua使用者普遍使用的东西 (参看 http://www.lua.org/uses.html),
本wiki已经存在的内容(参看 LuaDirectory).

类库和与Lua绑定的资源


LibrariesAndBindings 
开发环境

  • [LuaIDE] (5.0) - Windows平台Lua的整合开发环境(最新发布 2004-01-29).
  • [wxLua] (5.0) - Lua and wxWidgets的混合体.有自己的带有调试器的IDE。这个IDE使用wxlua开发的。
  • [LuaEclipse] (5.0) - Eclipse 平台的Lua IDE .
  • [Vortex LuaIDE] (5.0) - Brazilian Portuguese的一些免费的Lua IDE! (Outra IDE para Lua gratuita, mas em Português!).
  • [LuaX] (5.x) - 支持多种操作系统下开发Lua应用的开发平台(with GUI, serial port etc. modules)特别适合于工业自动化和嵌入式产品开发。
  • [VisualWx] (5.x) - Lua & wxLua的IDE (自由软件)
  • [QDE] (5.x) - Lua的Quotix 开发环境. 他支持工程管理,多文档接口等 (最新发布2005-03-06).
  • [B:Lua] - 开源项目: 具备各种特征的Lua IDE.

代码封装
  • [CPB] (5.0)(Win32) - C++ 和 Lua连接之桥,实现两种语言的相互通信.
  • [CaLua] (5.0) - 实现了绑定C函数和结构体到Lua,可以在Lua中使用C指针、数组、函数。(使用x86结构的计算机)
  • [CppLua] (5.0) - lua API的C++封装。
  • [lua2c] (5.0) - 将Lua代码转换成C代码的工具.
  • [luabind] (5.0) - 基于模板的,绑定Lua和C++类以及函数
  • [tolua] (5.0) - 自动绑定C/C++和Lua的工具.
  • LuaWrapper 基于模版的封装包,很容易绑定C++代码和Lua。纯头文件。
  • [tolua++] (5.0) - tolua的高级版本,带有c++面向对象的特征. ( CompilingToluappWithoutScons i.e., Compiling Tolua++ Without SCons )
  • [luapi] (5.0) - Lua api的C封装.
  • [PBLua] (5.0.2) - Lua 5.0.2基本库的封装.
  • [PowerBLua] (5.0) - PowerBASIC include & source for wrapping Lua (work in progress).
  • [wxScript] (5.0.2) - 一些抽象类,添加到脚本解释器可以使你的wxWidgets支持Lua语言。
  • [LunaticPython] (0.1) - Lua/Python 的双向桥。可以将Lua解释器嵌入到python中,反过来也可以。


Lua的使用
Lua的使用列表[1].

  • [Premake] -一个用Lua语言实现的 automake 替代品. 可以为MS VC++, GNU make, 等创建工程文件.
  • [Lumikki] (5.0) - 使用Lua宏创建web站点,可以使用导航菜单,风格等。

工具

  • ExpLua (5.0) - 代码文档工具(开发中。。。).
  • [Hamster (ex SCons/Lua)] (5.x) - Lua front-end to the SCons build engine (or others).
  • [Kepler Project] (5.0) - 使用 [CGILua 5.0]实现的Lua 5.0的web模板引擎 .
  • [Mod_Lua (5.0)] -  Apache 2的 module,使得web应用与PHP类似。
  • [ctrace] (5.0) - 跟踪Lua API调用的工具.
  • [lper] (5.0) - 创建持久Lua 状态的工具, 基于 [GNU mmalloc] (part of GDB).
  • PlutoLibrary (5.0.2) - 为Lua创建重量级的持久性.
  • [ChunkSpy] (5.0.2) - a binary chunk disassembler, with interactive mode, reading custom binary chunk formats, etc.
  • [lua bakefile] (5.0.2) - 创建 LUA 工程的makefile和工程文件。
  • [tolua bakefile] (5.0.2) - 创建 TOLUA 工程的makefile和工程文件。
  • [ChunkBake] (5.0.2) - a line-oriented assembler for Lua 5 virtual machine instructions
  • [LuaSrcDiet] (5.0.2) - 通过删除不必要的空白和注释缩减Lua文件的大小。
  • [LuaProfiler] (5.0) - 一个用来查找Lua应用瓶颈的工具time profiler 。


See also LuaEditorSupport
文档



发布版
See LuaBinariesfor links to precompiled vanilla Lua 5.0 executables for variousplatforms. Real binaries (without addons) should move from here tothere.

  • [LuaCheia] (5.0) - Lua 5.0 for GNU/Linux, Mac/OS X, Windows, *BSD, Solaris, etc. Includes many add-on binary modules.
  • [LuaPlus] (5.0) - C++ enhancements and various extensions to core Lua functionality
  • [Linux RPMs] (5.0) - i386 binary, source and spec file for Lua 5.0.2
  • [RPMs for Lua] (5.0) - from Rpmfind.Net.
  • [RPMs with Lua modules]
  • [Lua 5 for EPOC] (5.0) - Lua 5.0.1 for Symbian OS v1-5.
  • [LuaCE] (5.0) - additional source files for compiling Lua for Windows CE.
  • [LuaPPC] (5.0) - Stand-alone Lua 5.0 interpreter for the Pocket PC. (Built using LuaCE above.)
  • [LuaPocket] (5.0) - Stand-alone Lua 5.0 interpreter for the Pocket PC with graphic support. (Built using LuaPPC above.)
  • [Lua for RISC OS] (5.0)
  • [Lua for Palm OS] (5.0) Port of Lua for Palm (in alpha).
  • [Lua89] (5.0) Experimental port of Lua to the TI89 graphing calculator.

其他的一些Lua实现方式

  • [Sol] - Lua 的派生物.
  • [Lua.NET] .net相关的Lua
  • [LuaLeo] -  根据[Leonardo VM] 实现的Lua 3.1
  • [Lua-ML] -  由面向对象的Caml实现的 Lua 2.5
  • [Yindo] - Lua 的实现,作为OpenGL 浏览器插件(很快过时了)
  • [Yueliang] (5.0.2) - 使用Lua实现Lua,包括词法解析、语法解析、代码生成和生成二进制chunks.
posted @ 2008-10-18 00:49 kenlistian 阅读(2893) | 评论 (1)编辑 收藏

仅列出标题
共42页: First 27 28 29 30 31 32 33 34 35 Last