VS编译Lua程序,生成lua.lib

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

a 下载后解压到一个目录下,这里假设解压到D:\lua-5.1.5b 注意下载的版本,如果是5.2.x,后面代码中的C API发生了改变
2、在VS中新建一个静态库项目,项目命名为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文件中添加下面的代码

  1. #include "stdafx.h"  
  2. #include <stdio.h>  
  3. #include <string.h>  
  4.   
  5. extern "C"  
  6. {  
  7. #include <lua.h>  
  8. #include <lualib.h>  
  9. #include <lauxlib.h>  
  10. }  
  11.   
  12. int _tmain(int argc, _TCHAR* argv[])  
  13. {  
  14.     lua_State *L = lua_open();  
  15.     luaL_openlibs(L);  
  16.   
  17.     const char *buf = "print('Hello World')";  
  18.     luaL_dostring(L,buf);  
  19.       
  20.     lua_close(L);  
  21.   
  22.     return 0;  
  23. }  

按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

lua5.1.4 +VS2012编译静态库出错解决方案:
在项目的C++->预处理器->预处理器定义  添加一个_CRT_SECURE_NO_WARNINGS


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章