lua静态库的编译

lua静态库的编译

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目录下,运行就会弹出一个消息框。


lua静态库的编译_第1张图片


转自: http://hi.baidu.com/kingcomer/item/b73f2d12e7d8fafd86ad4e5b

你可能感兴趣的:(lua静态库的编译)