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

转载请保留原文地址: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 预编译头 

 Windows下用VC6.0编译Lua源码 生成静态库和动态链接库_第1张图片


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

Windows下用VC6.0编译Lua源码 生成静态库和动态链接库_第2张图片


最后就简单了,编译,得到 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

Windows下用VC6.0编译Lua源码 生成静态库和动态链接库_第3张图片


编译,得到 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下用VC6.0编译Lua源码 生成静态库和动态链接库_第4张图片

程序正常运行!


你可能感兴趣的:(Windows下用VC6.0编译Lua源码 生成静态库和动态链接库)