VS2010编译Lua程序5.1.5

http://blog.csdn.net/berdy/article/details/7925040

1、下载Lua源码 http://www.lua.org/download.html 

a 下载后解压到一个目录下,这里假设解压到D:\lua-5.1.5 b 注意下载的版本,如果是5.2.x,后面代码中的C API发生了改变
2、在VS2010中新建一个静态库项目,项目命名为lua
a 选择新建 Win32 console project
b 在wizard界面选择 static Library;不选择Precomplied Header
3、往工程中添加代码
a 复制D:\lua-5.1.5\src 目录下的*.h文件到项目的Header Files目录下
b 复制D:\lua-5.1.5\src 目录下的*.c文件到项目的Header Files目录下
4、配置项目的属性,在项目的“配置属性” 界面中操作
a Configuration Properties -> C/C++ -> General -> Additional Include Directories 
 添加D:\lua-5.1.5\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:\lua-5.1.5\src
2、在项目的的在testlua.cpp文件中添加下面的代码

[cpp]  view plain copy
  1. #include "stdafx.h"  
  2. #include <stdio.h>  
  3. #include <string.h>  
  4. #include <iostream>
    using namespace std;

  5.   
  6. extern "C"  
  7. {  
  8. #include <lua.h>  
  9. #include <lualib.h>  
  10. #include <lauxlib.h>  
  11. }  
  12.   
  13. int _tmain(int argc, _TCHAR* argv[])  
  14. {  
  15.     lua_State *L = lua_open();  
  16.     luaL_openlibs(L);  
  17.   
  18.     const char *buf = "print('Hello World')";  
  19.     luaL_dostring(L,buf);  
  20.       
  21.     lua_close(L);  
  22.     
  23.     system("pause");//为什么需要加这一句呢?不过不加这一句,控制台会闪一下就没有了。原理呢?
  24.   
  25.     return 0;  
  26. }  

按F5或Ctrl+F5,将会在控制台中输入了Hello World。

值得注意的:
前面的4->b步骤中如果选择的是Compile as C++ code,则在上面代码中就不需要extern "C"{},直接include就ok。否则会出现链接错误:

testlua.obj : error LNK2019: unresolved external symbol _lua_close referenced in function _wmain






评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值