CodeBlocks下的lua拓展
1.新建工程
新建dll工程,命名为exluatest,先进行一次编译,生成debug文件夹,然后去掉原先的main.cpp和main.h文件。
2.连接lua库
将之前编译好的lua库文件libluadll.a和lua的src文件夹复制到exluatest的文件夹中,将luadll.dll复制到debug文件夹中。
右键工程,在构建选项中选择构建选项,在链接器设置中添加链接库,在搜索目录中设置搜索路径为src。
添加exluatest.c文件,文件代码如下:
| 12
 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文件修改为:
| 12
 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文件为:
| 12
 3
 4
 5
 6
 
 | print("test0")local ans = require("exluatest")
 print(ans)
 print("test1")
 HelloFun()
 print("test2")
 
 | 
4.测试结果
运行test_lua,显示结果如下:
| 12
 3
 4
 5
 
 | test0Hello__1
 D:\CodeBlocks\workspace\Test_lua\bin\Debug\exluatest.dll
 test1
 HelloWorldtest2
 
 |