这是我发现自己无法深入使用正常的谷歌搜索/堆栈溢出/youtube 例程的第一个问题。
我正在尝试在 C++ 环境中编译一个最小的 Lua 程序,以确保我的环境已准备好进行开发。Lua 语言稍后将用于我的 C++ 游戏的用户界面编程。
首先是关于我的环境的一些基本信息:
Windows 7 64 位
视觉工作室 2010
Lua for Windows 5.1(我可以从谷歌代码下载的最新版本)
这是我要编译的代码:
// UserInt.cpp : Defines the entry point for the console application.
//
#pragma comment(lib,"lua5.1.dll")
#include "stdafx.h"
#ifndef __LUA_INC_H__
#define __LUA_INC_H__
extern "C"
{
#include "lua.h"
#include "lauxlib.h"
#include "lualib.h"
}
int _tmain(int argc, _TCHAR* argv[])
{
lua_State * ls = luaL_newstate();
return 0;
}
#endif // __LUA_INC_H__
这是我得到的错误:
1>UserInt.obj : error LNK2019: unresolved external symbol _luaL_newstate referenced in function _wmain
1>c:\users\deank\documents\visual studio 2010\Projects\UserInt\Debug\UserInt.exe : fatal error LNK1120: 1 unresolved externals
我尝试过的事情:
我已经阅读了关于不再使用 lua_open()(和其他几个函数)的信息,所以我尝试了 newstate 函数。我犯了同样的错误。这更像是一次理智检查。我使用的是 5.1 而不是 5.2,所以我认为这并不重要。
我还阅读了此线程无法链接最小的 Lua 程序,但它似乎对我没有帮助,因为我运行的环境与该 OP 不同。我在一个简单的 Windows 7 和 Visual Studio 环境中。
最上面的 pragma 注释行是我在另一个线程中看到的。无论有没有它,我都会遇到同样的错误。
我进入了我的 Visual Studio C++ 目录区域,并将 lua 包含添加到了包含中,并将 lua 库添加到了库中。
所以看起来我的程序正在看到 .h 并看到符号。但由于某种原因,它没有获得函数的 .cpp 实现。这就是为什么我希望直接包含该 .dll 有助于解决问题,但事实并非如此。
所以,我觉得我已经用尽了我自己解决这个问题的所有选择。我希望有人能够帮助我在这里前进。Lua 看起来像是一种很棒的脚本语言,我想让我的环境适应开发。
我希望这只是我的一些愚蠢的错误。我相信我已经提供了尽可能多的信息。如果您需要更多详细信息,我会在可以提供的情况下更新信息。
编辑1
尝试了这个Can't build lua a project with lua in VS2010 中的解决方案,怀疑是库问题
那也没有用。