【发布时间】: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.h或lualib.h。此外,从文件扩展名来看,lua.hpp是lua.h的包装器,它已经包含extern "C"声明,不应再包装在另一个声明中。在你的情况下,它也是多余的。