paip.c++ lua 调用attilax总结.

paip.c++ lua 调用attilax总结.


作者Attilax ,  EMAIL:1466519819@qq.com 
来源:attilax的专栏
地址:http://blog.csdn.net/attilax




安装lua ... LuaForWindows_v5.1.4-46.exe (25M)

Download Lua_V5.1.4-46.exe from Google Code
包括文档,例子等...实际的lua 很小,几百kb..




//编辑*.lua文件
IDE使用D:\Program Files\Lua\5.1\SciTE\SciTE.exe,可以单步调试.测试
name="attilax"
print (name)


file = io.open("c:\lualog.txt","a")
 --用'写模式'打开a.txt 不存在则新建文件


  file:write("Hello world.\n")
 --将字符串写入文件


  file:close()


命令行调用测试lua.exe   *.lua






引用lua.h以便编译以及以及lua的dll 以便链接

INCLUDEPATH += "D:\Program Files\Lua\5.1\include"
#LIBS+="D:\Program Files\Lua\5.1\lib\lua5.1.dll"
LIBS+="D:\Program Files\Lua\5.1\lib\lua51.dll"


c++源码:

#include "mainwindow.h"
#include <QApplication>
extern "C" {
#include "lua.h"
#include "lualib.h"
#include "lauxlib.h"
}


#include <iostream>
#include <string>
using namespace std;




int main(int argc, char *argv[])
{
    lua_State *L = lua_open();    //初始化lua
       luaL_openlibs(L);    //载入所有lua标准库


       /* 运行脚本  D:\Program Files\Lua\5.1*/
   //   luaL_dofile(L, "c:\luaTestC9.lua");   //ok
       luaL_dofile(L,"D:\\Program Files\\Lua\\5.1\\luaTestC9.lua");


       lua_close(L);//关闭
       return 0;
}




//加入lua  lib  dll到path,以便运行


D:\Program Files\Lua\5.1\clibs
D:\Program Files\Lua\5.1\lib




///调用中发现的问题以及解决:
1073741515错误。。
 原因:有文件没找到...
 调用pm,调试,发现不能找到*.lua路径错误...修理成双引号为路径分割,..走ok..






lua5.1.dll以及lua51.dll区别

其中lua5.1.dll大小合适,lua51.dll只有11K,感觉不像是个有用的lua dll
lua51.dll完全是一个lua5.1.dll的代理类,没有任何实际的代码,仅仅是做一个到lua5.1.dll的forwarding。
为啥会需要一个这样的东西呢?
原来是3年前有人确定了一个lua51.dll名字的动态库,并且,有人觉得我们非常需要在5和1之间加一个点,不然lua的5.1版岂不是看成lua的51版了?
历史原因:
一个错误的决定,但是已经发布了,很多第3方的库也发布了,并且依赖于LuaBinaries的这个lua51.dll,于是
现在难以撤销的不幸决定。。。。。。。。。。。。




文档资料:

Lua程序设计.chm
luaer.cn




参考
lua51.dll,lua51.lib 和 lua5.1.dll 和lua5.1.lib 的区别 - xiexievv的专栏 - 博客频道 - CSDN.NET.htm
Lua小部分文件io操作方法 - 朱大仙 - 博客园.htm
lua与c++的相互调用 - 笑对人生的专栏 - 博客频道 - CSDN.NET.htm
在C++中使用Lua(一)-wwm-ChinaUnix博客.htm

原文地址:https://www.cnblogs.com/attilax/p/15199486.html