在C++中使用Lua的问题

我同时使用VS Code和Visual Studio 2019,在Windows 10上。C++和Lua单独使用都很好。所有东西都更新到最新版本。

我将Lua安装在:_C:\Program Files\Lua_下。 在_C:\Program Files\Lua\include_下有所有的.h、.c和.hpp文件。 为了测试目的,我将文件夹“include”的内容复制到了我的程序文件夹中,放在了“Lua”中。所以有了_[exe目录]/Lua_。

这是我从互联网上找到的示例代码:

// main.cpp
#include <iostream>
#include "lua/lua.hpp"

using namespace std;

int main(int argc, char* argv[])
{
    lua_State* L = luaL_newstate();
    luaL_dostring(L, "x = 42");
    lua_getglobal(L, "x");
    lua_Number x = lua_tonumber(L, 1);
    cout << "lua说x = " << (int)x << endl;
    lua_close(L);
}

当我尝试在VS Code中运行它(alt + ctrl + N,这是插件中的组合键),我得到了:

C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/10.3.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:\Users\Sokrates\AppData\Local\Temp\ccVATT2h.o:mainLauncher.c:(.text+0x15): 未定义对“luaL_newstate”的引用
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/10.3.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:\Users\Sokrates\AppData\Local\Temp\ccVATT2h.o:mainLauncher.c:(.text+0x2c): 未定义对“luaL_loadstring”的引用
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/10.3.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:\Users\Sokrates\AppData\Local\Temp\ccVATT2h.o:mainLauncher.c:(.text+0x5f): 未定义对“lua_pcallk”的引用
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/10.3.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:\Users\Sokrates\AppData\Local\Temp\ccVATT2h.o:mainLauncher.c:(.text+0x6d): 未定义对“lua_close”的引用
collect2.exe: error: ld returned 1 exit status

我找到了一些不同的“修复”方法,但它们都是针对Linux的,例如这个这个。所以对于Win10没有什么帮助。

VS 2019中,我将所有这些.h和.c文件添加到“源文件”中(除了_luac.c_和_lua.c_)。没有任何#include的话,代码将无法工作,所以我写了#include "lua.hpp"。我得到了一个错误"无法打开源文件"lua.hpp""。然后我尝试将带有.h和.c文件的整个文件夹复制到程序目录中,并使用#include "Lua/lua.hpp"。我回到了与VS Code相同的错误。

其他一些问题和答案在它们下面提到了参数"-llua"。我在手动构建中尝试了它:"g++ main.cpp -o main -llua",然而我得到了:

C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/10.3.0/../../../../x86_64-w64-mingw32/bin/ld.exe: 无法找到-llua
collect2.exe: error: ld returned 1 exit status

最后一刻的观察:将VS 2019解决方案设置为"debug x64"似乎已经在那里解决了这个问题(代码正确运行并显示数字;仍然需要复制所有.h 和.c文件到exe目录中)。但是我不知道如何将它应用到VS Code(我更喜欢使用VS Code而不是VS 2019)。 我找到了这个,但是即使安装了扩展,也没有可点击的选项或"Switch to Windows PowerShell (x64)"。

原文链接 https://stackoverflow.com/questions/71257483

点赞