您的位置:首页 > 编程语言 > Lua

Windows下用VC6.0编译Lua源码 生成静态库和动态链接库

2015-03-12 11:10 423 查看
转载请保留原文地址:http://blog.csdn.net/totohack/article/details/44219191 及作者:Totohack



1、 下载Lua源代码

到 http://www.lua.org/download.html 官网下载,我下载的是 lua-5.3.0 版本,解压源码包,得到 src 文件夹,这例有我们下面编译需要的文件

也可以到我的百度网盘下载用VC6构建好的工程 http://pan.baidu.com/s/1hMHm2

当然也需要个编译器,这里我用的是Microsoft Visual C++ 6.0 (sp6),(没有的,请自行百度下载,当然vc的其他版本也可以)

下面就以VC6.0为例,讲解编译过程:

2、编译Lua源代码过程

(1):编译静态库 

首先新建一个空白的 Win32 Static Library (静态库) 工程,命名为 lualib ,删除工程中所有文件,添加 src 目录下 所有 *.c 文件,再删除 luac.c lua.c
两个文件

这些跟网上的教材都一样,但我们可以发现,使用这个静态库时,链接器找不到符号,通过阅读源代码,我找到了原因,下面的设置也就是本文的重点了

关闭 vc 预编译头 

 


设置编译 Preprocessor Definitions 选项,为 _WIN32(注意WIN32前面有个下划线),如果是DEBUG版的,可以修改为 LUA_DEBUG,_WIN32(注意中间有个半角模式下的逗号)



最后就简单了,编译,得到 lualib.lib

(2):编译动态库 

新建一个空白的 Win32 Dynamic-Link Library (动态库) 工程,命名为 luadll ,删除工程中所有文件,添加 src 目录下
所有 *.c 文件,再删除 luac.c lua.c 两个文件

关闭 vc
预编译头

设置编译 Preprocessor Definitions 选项,为 _WIN32,LUA_BUILD_AS_DLL,如果是DEBUG版的,可以修改为 LUA_DEBUG,_WIN32,LUA_BUILD_AS_DLL



编译,得到 luadll.libluadll.dll
两个文件

3、测试



测试动态链接库

新建空白控制台工程,添加main.cpp文件,代码如下:

#include "windows.h"

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

#pragma comment(lib,"luadll.lib")

lua_State * L;

int main ( int argc, char *argv[] )
{
char *lua = "print(\"Hello world!\")";

//创建一个指向lua解释器的指针
L = luaL_newstate();

//加载lua标准库
luaL_openlibs(L);

//加载脚本
luaL_loadbuffer(L,lua,strlen(lua),"line");

//运行脚本
if (LUA_OK!=lua_pcall(L,0,0,0))
{
//调用失败,添加处理
}
//关闭并释放资源
lua_close(L);

//系统命令,暂停
system("pause");
return 0;
}


编译,将luadll.dll 复制到 exe文件目录下,运行exe文件,显示如下:





程序正常运行!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  windows lua 源代码 vc