lua 与 c++ 的基本交互 1

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了lua 与 c++ 的基本交互 1相关的知识,希望对你有一定的参考价值。

版本是 lua5.1 vs 2013 

转载自 http://blog.csdn.net/wangbin_jxust/article/details/37557807

 

一、打开vs2010

二、创建项目

新建项目->win32控制台应用程序->下一步->应用程序设置中选择静态库,不勾选预编译头->完成。具体如下图:

技术分享

技术分享

三、拷贝源码

将lua源码中的*.h文件拷贝到项目的头文件文件夹下,将lua源码中的*.c文件拷贝到项目的源文件文件夹下。

四、生成lua.lib

项目右键->生成。此时即可在项目的Debug文件夹下看到生成的 lua.lib了。

在前一篇文章中,我们已经讲了如何编译lua源码并生成lua.lib(请阅读 使用vs2010编译lua5.1源码生成lua.lib),在新的项目中,我们继续使用之前的项目来学习如何使用c++调用lua。如果有遇到unprotected error in call to Lua API错误,请参考本文最后的做法。

生成时可能 有一些安全警告错误 

为了禁止一些安全警告(Windows程序员知道为什么),需要再修改配置属性->C/C++–>预处理器->预处理器定义,在末尾添加

;_CRT_SECURE_NO_DEPRECATE;_SCL_SECURE_NO_DEPRECATE

一、创建项目

同样在该解决方案中,右键解决方案->添加项目->命名为testlua,选择win32控制台程序->不需要其他配置,选择完成。

二、配置项目

右键testlua项目->通用属性->框架和引用->添加新引用,指向lua项目。

右键testlua项目->配置属性->c/c++->常规->附加包含目录中,添加lua源码地址。

三、代码调用

 

[cpp] view plain copy
 
 print?技术分享技术分享
  1. #include "stdafx.h"  
  2. extern "C"    
  3. {    
  4. #include <lua.h>    
  5. #include <lualib.h>    
  6. #include <lauxlib.h>    
  7. }    
  8.   
  9. int _tmain(int argc, _TCHAR* argv[])  
  10. {  
  11.     lua_State *L = lua_open();    
  12.     luaL_openlibs(L);    
  13.     
  14.     const char *buf = "print(‘Hello World‘)";    
  15.     luaL_dostring(L,buf);    
  16.         
  17.     lua_close(L);    
  18.   getchar(); //这句可以让你清楚的看到打印的 hello world
  19.     return 0;  
  20. }  

五、创建lua文件

在当前cpp文件所在的目录下,创建一个test.lua文件,文件里写加上lua代码,这里我写的是 print("hello world  from lua file")

四、完成

直接运行,可以输出"hello world" 和 hello world  from lua file。
 
如果遇到 unprotected error in call to Lua API (unable to get ModuleFileName)错误,请修改两个项目的字符集,项目右键->配置属性->常规->字符集,这里将“使用unicode字符集”修改为"使用多字节字符集"。

以上是关于lua 与 c++ 的基本交互 1的主要内容,如果未能解决你的问题,请参考以下文章

lua 与 c++或者c 交互的底层原理谁能解释一下?最最底层的,为啥它们调用C或者C++的函数?

C++与Lua交互实例 -- 矩阵的加减乘除(版本二)

LuaJavaBridge - lua与java互操作的简单解决方案

lua与c的交互(运用)

Lua和C++交互详细总结

Lua封装&C++实践—— C++调用Lua函数的封装