Codeblocks调用lua

scorlw 发布于

Codeblocks调用lua

一、封装lua

1.新建工程

首先在code::blocks中新建一个Dynameic Link Library工程,名为luadll。

将工程中原先的main.cpp和main.h都移除,将lua的src文件夹中,除了lua.c和luac.c外,都移动到luadll的工程目录下,并添加到工程。

构建并运行,在luadll\bin\debug文件夹中生成.a、.def、.dll三个文件。

二、测试lua

1.新建工程

新建工程,命名为Test_lua。

2.配置环境

运行一下,使其生成debug文件夹。

然后将上面生成的libluadll.a文件复制到Test_lua文件夹,lua文件的src文件中的lua.h、lualib.h、luaxlib.h和luaconf.h四个文件复制到Test_lua文件夹中(我在Test_lua文件夹中新建了一个src文件夹)。

将luadll.dll文件复制到Test_lua的debug文件夹里。

右键工程,选择构建选项

thX0XV.png

在链接器设置里添加库的路径,选中Test_lua文件夹中的libluadll.a文件(我使用相对路径的话会出错,所以设成了绝对路径)

thXDmT.png

添加src文件夹为搜索目录。

thXs7F.png

3.编写测试代码

将Test_lua的main函数改写如下:

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\\test.lua");
lua_close(L);

return 0;
}

其中,lua脚本的代码为:

1
2
3
4
5
6
7
8
9
10
function show()
local b = {}
local index

for index = 1,10,1 do
print(index)
end
end

show()

编译并运行,显示1,2,3,4,5,6,7,8,9,10,则成功。