【问题标题】:C++ Unresolved External Symbols Embedded LuaC++ 未解析的外部符号嵌入式 Lua
【发布时间】:2013-02-17 02:41:23
【问题描述】:

我正在尝试使用带有嵌入式 Lua 引擎的 Visual C++ 2010 制作游戏,但我一直遇到持续的未解决的外部符号错误。我将所有文件的副本放在项目头文件夹中的“包含”文件夹中,并尝试将链接器库路径设置为 Lua lib 文件夹,并将包含路径设置为 Lua 包含文件夹,但我仍然是出现错误,指出几个 Lua 核心函数的使用未解决。我已经尝试了很多在互联网上发布的解决方案,每一个都导致相同的错误。

输出:

1>Main.obj : error LNK2019: unresolved external symbol _lua_pcall referenced in function _main
1>Main.obj : error LNK2019: unresolved external symbol _luaL_loadfile referenced in function _main
1>Main.obj : error LNK2019: unresolved external symbol _luaL_newstate referenced in function _main

Main.cpp:

#include "stdafx.h"
#include "Bubble Wars.h"

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

int main()
{
    lua_State * L = lua_open();
    luaL_dofile(L,"C:/Users/Trevor/Documents/Visual Studio 2010/Projects/Bubble Wars/Bubble Wars/Main.lua");
    return 0;
}

Main.cpp 是唯一包含任何 Lua 引用的源文件。函数引用未解决的任何原因?

【问题讨论】:

  • 这通常意味着您没有链接到“.lib”(或者.a)文件。检查你的 makefile 以确保它也被链接了。
  • @RefugnicEternium 我如何确保它被链接到?我习惯于直接编写脚本,主要是在 Lua 中。我还不完全熟悉 Visual C++ 等 IDE。
  • 恐怕这是非常特定于编译器的。对于 Borland,您只需“将 lib 添加到项目中”,对于 gcc makefile,您需要添加 -llibrarynamehere(这不是错字,它确实需要在前面加上 -l
  • @RefugnicEternium 我发现了如何链接到图书馆,链接它,它工作。谢谢。
  • 请注意,您不必包含luaconf.hlualib.h。此外,从文件扩展名来看,lua.hpplua.h 的包装器,它已经包含 extern "C" 声明,不应再包装在另一个声明中。在你的情况下,它也是多余的。

标签: c++ linker lua


【解决方案1】:

在设置链接器目录之后,您还需要提供实际的库以链接到您的链接器。

【讨论】:

    猜你喜欢
    • 2017-05-26
    • 2013-02-28
    • 2012-11-19
    • 1970-01-01
    • 1970-01-01
    • 2021-05-31
    • 2012-12-17
    • 2012-06-30
    相关资源
    最近更新 更多