CodeBlocks下的lua拓展

scorlw 发布于

CodeBlocks下的lua拓展

1.新建工程

新建dll工程,命名为exluatest,先进行一次编译,生成debug文件夹,然后去掉原先的main.cpp和main.h文件。

2.连接lua库

将之前编译好的lua库文件libluadll.a和lua的src文件夹复制到exluatest的文件夹中,将luadll.dll复制到debug文件夹中。

右键工程,在构建选项中选择构建选项,在链接器设置中添加链接库,在搜索目录中设置搜索路径为src。

添加exluatest.c文件,文件代码如下:

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
38
39
40
41
42
43
44
45
#include "windows.h"
#include "stdio.h"

#define LUA_LIB

#include "lua.h"
#include "lualib.h"
#include "lauxlib.h"
#include "luaconf.h"



static int HelloFun(lua_State *L){

printf("HelloWorld");

return 0;

}


static int HaHa(lua_State *L){

printf("HaHa");

return 0;

}


LUALIB_API int luaopen_exluatest(lua_State *L)

{

printf("Hello__1\n");

//luaL_newlib(L, mylib);

//luaL_register(L,"ss",mylib);

lua_register(L, "HelloFun", HelloFun);

return 1;

}

点击编译,生成libexluatest.a和exluatest.dll文件。

3.lua脚本的编写与调用

新建工程为lua_test,构建一下生成debug文件夹,将上一步生成的libexluatest.a和exluatest.dll文件分别复制到工程目录和debug文件夹下。将之前生成的libluadll.a和lua的src文件夹复制到工程目录下。

右键工程,构建选项中添加libexluatest.a和libluadll.a两个库,搜索目录设为src。

将main.cpp文件修改为:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <stdio.h>

extern "C"
{
#include "lua.h"
#include "lualib.h"
#include "lauxlib.h"
#include "luaconf.h"
};

int main(int argc, char* argv[])
{
lua_State* L = luaL_newstate();
luaL_openlibs(L);
luaL_dofile(L, "D:\\CodeBlocks\\workspace\\Test_lua\\bin\\Debug\\luaextest.lua");
lua_close(L);

return 0;
}

其中lua文件为:

1
2
3
4
5
6
print("test0")
local ans = require("exluatest")
print(ans)
print("test1")
HelloFun()
print("test2")

4.测试结果

运行test_lua,显示结果如下:

1
2
3
4
5
test0
Hello__1
D:\CodeBlocks\workspace\Test_lua\bin\Debug\exluatest.dll
test1
HelloWorldtest2