vs 2010 将编译好的lua静态库运用起来

14 篇文章 0 订阅

一直在用Lua写程序。但是对lua和c/c++交互的这一部分还是很感兴趣。由于本身不熟悉vs,所以在之前走了好多弯路。在看programming in lua 这本书时,lua与c交互这部分用代码实现看起来还是挺容易的,但是用vs真正用起来还是费了一点时间。下面就记录下来。

首先拿到lua 52的源码,将lua编译成为Lua52.dll 和lua52.lib两个文件,一个是静态连接库,一个是动态连接库。。用vs新建一个工程,将lua.h,lualib.h,lauxlib.h三个文件添加到资源管理器的 头文件文件夹中,最好将这三个文件复制到本地工程中。同时在源文件中添加代码:

#include<iostream>
extern "C"
{
	#include "lua.h"
	#include "lualib.h"
	#include "lauxlib.h"
};
//#pragma comment(lib,"lua52.lib")

void exe_lua()
{
	lua_State* L = luaL_newstate();
	luaL_openlibs(L);
	luaL_dofile(L, "resource\\test.lua");
	lua_close(L);
}

void use_lua_func()
{
	lua_State* pLuaState;
	pLuaState = luaL_newstate();
	luaL_openlibs(pLuaState);

	if (luaL_dofile(pLuaState,"resource\\Func.lua") != 0)
	{
		std::cout<<"Load Lua File Error"<<std::endl;
	}
	lua_getglobal(pLuaState,"Factorial");    
	lua_pushnumber(pLuaState,5);             
	lua_call(pLuaState,1,1);                
	lua_Number iResult = lua_tonumber(pLuaState,-1);
	std::cout<<iResult<<std::endl;          
	lua_close(pLuaState);
}

int main()
{
	
	//use_lua_func();
	exe_lua();
	system("pause");
	return 0;
}
下面主要是连接lib和dll的问题。先在工程点击右键,属性-》配置属性-》连接器-》输入-》附加依赖项 中加入lua52.lib。之后 属性-》配置属性-》连接器-》常规-》附加库目录 中,将lib的目录复制到里面。将lua52.dll文件放到debug文件夹下就可以了。

test.lua内容如下:

print("Hello This is a test lua")
function show()  
    local b = {}  
    local index  
      
    for index = 1,10,2 do  
        print(index)  
    end  
end  
  
show()
Func.lua内容如下:
print("Hello This is a Lua File")
function Factorial(n)
 if n == 0 then 
  return 1
 else
  return n*Factorial(n-1)
 end
end


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值