VS2010编译Lua程序(lua-5.2.3)

编译静态链接库

1.下载Lua源码

下载后解压到一个目录下,这里假设解压到D:\win32Lua 注意下载的版本,如果是5.2.x,后面代码中的C API发生了改变

2)在VS2010中新建一个静态库项目,项目命名为lua
        a 选择新建 Win32 console project

b 在wizard界面选择 static Library;不选择Precomplied Header

3)往工程中添加代码

a 复制D:\win32Lua\lua-5.2.3\src 目录下的*.h文件到项目的Header Files目录下

b 复制D:\win32Lua\lua-5.2.3\src 目录下的*.c文件到项目的Code Files目录下

注:需要注意的是 lua.c  和luac.c 不能一起编译进去。

4)配置项目的属性,在项目的“配置属性” 界面中操作
        a Configuration Properties -> C/C++-> General -> Additional Include Directories

添加D:\win32Lua\lua-5.2.3\src

b Configuration Properties -> C/C++-> Advanced -> compile as

这里的选择将影响后面代码中如何指定编译链接方式,后面的测试选择的是Compile as C code

5)生产项目 Build
    如果是DEBUG mode 将在Debug目录下看到一个lua.lib文件,Release mode的lib文件在Release文件下

C/C++代码中调用lua

1)在解决方案中添加一个 Win32 console project,项目名称命名为testlua,后面wizard界面中的选项无需修改
    2)添加对lua项目的引用
        a Common Properties -> Framework and References -> Add New References

选择lua项目

3)添加对头文件的include directory
        a Configuration Properties -> C/C++-> General -> Additional Include Directories

添加D:\win32Lua\lua-5.2.3\src

示例代码:

// testlua.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include <stdio.h>
#include <string.h>

extern "C"
{
#include <lua.h>
#include <lualib.h>
#include <lauxlib.h>
}
int _tmain(int argc, _TCHAR* argv[])
{
	lua_State *L = luaL_newstate();
	luaL_openlibs(L);
	luaL_dofile(L,"test.lua");

	//const char *buf = "print(‘Hello World‘)";
	//luaL_dostring(L,buf);

	lua_close(L);
	return 0;
}

test.lua

function show()
    print("helloworld")
end  

show()  

运行效果:

引用博文:http://blog.csdn.net/berdy/article/details/7925040

VS2010编译Lua程序(lua-5.2.3)

时间: 2024-11-06 12:33:47

VS2010编译Lua程序(lua-5.2.3)的相关文章

VS2010编译Qt程序失败------error LNK1123: 转换到 COFF 期间失败:

error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏使用VS2010编译VC++项目的时候可能会出这个问题. 据说升级到SP1后可能问题解决,但是下载量太大,目前没有得到证实. 网上大多的方法都是说在“清单工具”中将嵌入清单改成“否”,但是这个不一定100%解决问题. 我总结了下 http://www.verydemo.com/demo_c278_i5203.html http://davidrobot.com/2014/06/qt5_vs2010_lnk1123_erro

VS2010编译、调用Lua程序

一) .建立lua源代码工程,编译lua的静态库 1.下载Lua源码 http://www.lua.org/download.html a 下载后解压到一个目录下,这里假设解压到D:\lua-5.1.5b 注意下载的版本,如果是5.2.x,后面代码中的C API发生了改变2.在VS2010中新建一个静态库项目,项目命名为lua     a 选择新建 Win32 console project     b 在wizard界面选择 static Library:不选择Precomplied Head

亲测VS2010纯静态编译QT4.8.0,实现VS2010编译调试Qt程序,QtCreator静态发布程序(图文并茂,非常详细)

下载源代码,注意一定是源码压缩包如qt-everywhere-opensource-src-4.8.0.zip,不是Qt发布的已编译的不同版本的标准库如qt-win-opensource-4.8.0-vs2010.exe,这些版本都只是动态编译的,不是我们所需要的.只有用源码包才能做真正的纯静态编译,如果用Qt官网已编译的标准库.exe文件进行编译,有可能出现各种错误,而且编译后的文件巨大,我当时就在这里绕了很大的弯子,请童鞋们注意啦!!可能有些老鸟会笑话,但我本着最严肃的态度告诉菜鸟们,上网查

VS2010 win7 QT4.8.0,实现VS2010编译调试Qt程序,QtCreator静态发布程序

https://www.cnblogs.com/rainbowzc/p/4689009.html 下载源代码,注意一定是源码压缩包如qt-everywhere-opensource-src-4.8.0.zip, 不是Qt发布的已编译的不同版本的标准库如qt-win-opensource-4.8.0-vs2010.exe,这些版本都只是动态编译的,不是我们 所需要的.只有用源码包才能做真正的纯静态编译,如果用Qt官网已编译的标准库.exe文件进行编译,有可能出现各种错误,而且编译后的文件巨大,我当

[转]VS2015编译的程序在其他机器上缺少msvcp120.dll

http://www.lai18.com/content/1159618.html 1. 今天分享一个自己在开发过程中遇到的困难. 用VS2015开发了一个windows客户端(win32项目),在自己的机器上运行很流畅.当你得意的把releas版本进行打包,并进行发布后,问题来了?很多人反馈运行时缺少msvcp140.dll,甚至有人在XP系统上完全不能用. 那么首先看看是如何解决的: 在工程上打开属性,选择C/C++,选择代码生成,把运行库改为"多线程(/MT)".重新编译即可.

使用vs2010编译lua5.1源码生成lua.lib

一.打开vs2010 二.创建项目 新建项目->win32控制台应用程序->下一步->应用程序设置中选择静态库,不勾选预编译头->完成.具体如下图: 三.拷贝源码 将lua源码中的*.h文件拷贝到项目的头文件文件夹下,将lua源码中的*.c文件拷贝到项目的源文件文件夹下. 四.生成lua.lib 项目右键->生成.此时即可在项目的Debug文件夹下看到生成的 lua.lib了. 使用vs2010编译lua5.1源码生成lua.lib,布布扣,bubuko.com

Lua程序转载 - 面向对象的实现探讨

> 转载出处:http://blog.csdn.net/xenyinzen/article/details/3536708 元表概念     Lua中,面向对向是用元表这种机制来实现的.首先,一般来说,一个表和它的元表是不同的个体(不属于同一个表),在创建新的table时,不会自动创建元表.但是,任何表都可以有元表(这种能力是存在的). e.g.t = {}print(getmetatable(t))   --> nilt1 = {}setmetatable(t, t1)assert(getm

cocos2dx android运行Luac编译后的lua代码

运行环境 win7 64 cocos2d-2.1rc0-x-2.1.2 lua 5.1 通常我们编写好的lua代码都是明文形式,谁都可以查看修改,为了防止自己的劳动成果不被别人轻易的盗取,可以使用luac(lua库中自带)对其进行加密,转换为二进制文件.这样lua代码就无法直接查看,但是这里会有一个问题:在windows下能够很好的运行,在android上就会黑屏,提示错误: [LUA ERROR] binary string: unexpected end in precompiled chu

在C++使用LUA交互,LUA实现闭包,C++/LUA相互闭包

LUA可谓是配置文件神器,具体功能用过才知道,接近两年没用了抽了俩小时熟悉了下基本的用法. 包括C/LUA堆栈操作 函数相互调用 以及LUA的闭包 C++和LUA相互闭包 想要灵活使用LUA必须先要学习 LUA和C的堆栈交互模型 类似于汇编函数调用方式了 很有意思. 要学习LUA首先要理解LUA和C/C++交互的堆栈lua_State  这里引用网友的一篇文章很详细 http://wind-catalpa.blog.163.com/blog/static/11475354320131191031