c++ 和 lua-如何开始

c++ And lua-how to begin?

本文关键字:开始 何开始 lua- c++      更新时间:2023-10-16

我正在尝试其他语言。 获得VB2013和LuaForWindows 5.1在我的程序中运行.lua文件的最基本文件结构是什么?我目前已经完成了 http://www.youtube.com/watch?v=w51pftzS1_8 包括部分,制作了一个看起来像这样的.h文件

#ifndef __LUA_INC_H__
#define __LUA_INC_H__

#include "lua.h"
#include "lauxlib.h"
#include "lualib.h"

#endif // __LUA_INC_H__

和运行.cpp像这样

#include <iostream>
#include <conio.h>
#include <iostream>
#include "LuaInc.h"
using namespace std;
int main()
{
int iErr = 0;
lua_State *lua = lua_open();  // Open Lua
luaopen_io(lua);              // Load io library
if ((iErr = luaL_loadfile(lua, "test.lua")) == 0)
{
    // Call main...
    if ((iErr = lua_pcall(lua, 0, LUA_MULTRET, 0)) == 0)
    {
        // Push the function name onto the stack
        lua_pushstring(lua, "helloWorld");
        // Function is located in the Global Table
        lua_gettable(lua, LUA_GLOBALSINDEX);
        lua_pcall(lua, 0, 0, 0);
    }
}
lua_close(lua);
_getch();
return 0;
}

test.lua 文件位于 VB213 项目 dir/MYPROJECT/MYPROJECT 中

看起来像这样

function helloWorld ()
 io.write ("hello World")
end

从VS2013和Lua for Windows开始,您将遇到一些与获得正确的C运行时库版本相关的痛苦。Lua for Windows是针对VS2005附带的旧版本的CRT编译的。可能或可能无法让VS2013链接到该旧版本。混合CRT版本会导致很多混乱。

最简单的方法是获取为您的Visual Studio版本构建的Lua核心版本。有两种方法可以做到这一点。

  1. 从 Lua 二进制文件下载版本。Lua的预构建版本可以从"官方"Lua Binaries发行版中获得。它可以用于 32 位和 64 位版本、Windows 和其他平台。

  2. 自己构建 Lua 作为解决方案的一部分。构建自己的Lua51.dll很简单,默认配置是明智的。它主要相当于在DLL项目中包括几乎所有的.c文件。请注意,lua.c不是 DLL 的一部分,而是要lua.exe的源。同样,luac.c不是 DLL 的一部分,它是luac.exe的源代码,这确实需要小心来构建自己;但你不太可能需要它。

无论哪种方式,您都需要注意一些细节。

Lua API 是 C API,而不是C++。因此,如果你坚持让你的应用程序成为一个C++应用程序,你应该将Lua头文件的包含包装在一个exern "C"块中:

extern "C" {
#include "lua.h"
#include "lauxlib.h"
#include "lualib.h"
}

原则上,您可以构建 Lua 核心作为C++。核心以干净的 C 风格编写,也是 C++ 的子集,并在编译为 C++ 时进行测试。但是,如果你走这条路,那么你必须自己构建任何二进制模块来对抗你的C++链接,如果你依赖许多社区提供的模块,这种方式可能会很疯狂。

我相信Lua Binaries上提供的所有构建都是编译为C,而不是C++,因此需要extern "C"声明。

好吧,对于初学者来说,我建议使用c ++并切换到lua作为您的主要编程语言。 用 c++ 调用 lua 函数是相当混乱的,至少这是我的经验。 一旦你对Lua有足够的了解,然后通过dll或其他文件/系统格式从Lua调用c/c ++函数。 我在学习python或c/c ++之间左右为难,我选择了python。 从那里我了解了Lua,并且比python更喜欢它。 同样,这只是我的经验和建议。 现在回答你的问题,为什么要在C++运行Lua? Lua基于C API,所以我只会使用原始C或坚持使用C++。 我这样说只是因为Lua在技术上与C的淡化版本没有什么不同。 然而,Lua不再被"淡化",因为它可以用作一种完全可操作的独立编程语言。