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");
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
|