兔子的技术博客

兔子

   :: 首页 :: 联系 :: 聚合  :: 管理
  202 Posts :: 0 Stories :: 43 Comments :: 0 Trackbacks

留言簿(10)

最新评论

阅读排行榜

评论排行榜

lua静态库的编译

使用lua除了可以直接使用DLL之外,再有一个方法就是直接使用lua的静态lib,在这里我们将介绍使用静态lib的方法。


1.编译静态lib


我们这里使用的是lua-5.1.4.CN.7z版本,我们新建一个lib工程,注意不勾选“Pre-Compiled header”支持,然后将源码文件里src下目录文件全部拷贝到新建的工程目录下,除了print.c、lua.c、luac.c这三个文件之外,其他的文件都添加到工程中去,然后F7编译,就会在目录下面看到一个lib文件。这个就是我

们需要的lib库,如果编译不成功,看提示错误,一般情况,都是可以编译通过的。


2.使用lib


为了使用lua的静态库,我们需要4个文件支持lauxlib.h,lua.h,luaconf.h,lualib.h,我们可以将这4个文件直接拷贝到工程目录下调用,也可以讲其拷贝到vc include目录下,这样以后调用lua就不需要重新拷贝操作了,lib文件也作重样的处理。

在这里为了工程的可移植性(在没有配置lua环境下的机器上编译),我就直接将相关文件直接拷贝到工程目录 \lua 下了。

vc使用静态lib的代码如下:


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#include "stdafx.h"
#include <windows.h>
   
//头文件支持
extern "C"
{   
    #include "Lua\lua.h" 
    #include "lua\lualib.h"
    #include "lua\lauxlib.h"
}  
   
//lib库支持
#pragma comment(lib, "lua\\lua5.14.lib")
   
//VC函数
static int Msg(lua_State *L)
{
    const char * pStr = lua_tostring(L, 1);
    ::MessageBox(NULL, pStr ,"LuaTest", MB_OK);
    return 0;
}
   
int main(int argc, char* argv[])
{
    lua_State *L= luaL_newstate();
     //加载lua基础库
    luaL_openlibs(L);
    //注册VC函数,让lua虚拟机能够识别可调用的函数
    lua_register(L, "MsgBox", Msg);
   
    if(luaL_dofile(L, "LuaTest.lua")!= 1)
    {
        printf("执行失败~ \r\n");
    }
    lua_close(L);
    return 0;
}


lua调用代码:


1
MsgBox("okay");


编译之后,将脚本拷贝到exe目录下,运行就会弹出一个消息框。



转自:http://hi.baidu.com/kingcomer/item/b73f2d12e7d8fafd86ad4e5b
posted on 2013-09-29 20:54 会飞的兔子 阅读(1781) 评论(0)  编辑 收藏 引用 所属分类: C++库,组件

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   博问   Chat2DB   管理