这是我发现自己无法使用正常的谷歌搜索/堆栈溢出/移动程序的第一个问题。
我正在尝试在C ++环境中编译一个最小的Lua程序,以确保我的环境可以开发。 Lua语言稍后将用于我的C ++游戏的用户界面编程。
Windows 7 64位
Visual Studio 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,所以我认为这不重要。
我也读过这个帖子Cannot link a minimal Lua program,但它似乎没有帮助我,因为我没有运行与OP相同的环境。我在一个简单的Windows 7和视觉工作室环境中。
我在另一个帖子中看到了顶级的pragma注释行。无论有没有,我都会得到同样的错误。
我已进入我的visual studio C ++目录区域,并将lua include添加到includes和lua lib到库中。
所以看起来我的程序正在看到.h并看到符号。但由于某种原因,它没有获得函数的.cpp实现。这就是为什么我希望包括.dll直接有助于解决问题,但它没有。
所以,我觉得我已经筋疲力尽了我自己解决这个问题的所有选择。我希望有人能够帮助我在这里前进。 Lua看起来像是一个很棒的语言来编写脚本,我想让我的环境平稳地进行开发。
我希望这只是我的一些愚蠢的错误。我相信我提供了尽可能多的信息。如果您需要更多细节,我会更新信息,如果我能提供它。
尝试了此Can't build lua a project with lua in VS2010, library issue suspected
中的解决方案这也不起作用。
答案 0 :(得分:9)
您需要拥有库(.LIB)文件并将其添加到VS.使用项目>属性并转到链接器>输入并将完整的.lib文件名添加到“Additional Dependencies”行。请注意,.LIB与.DLL不同。
就个人而言,我更喜欢将源代码添加到我的项目中,而不是引用动态链接库。以下程序将允许您这样做。
下载源代码(http://www.lua.org/ftp/),解压缩。
在Visual Studio中,选择“文件”>新>项目并选择Visual C ++,Win32,“Win32控制台应用程序”。
在Visual Studio的项目中,添加除luac.c以外的所有源代码。同时从VS为您创建的文件中删除main()函数。这通常是您使用.cpp文件扩展名指定的项目的名称。您可以从项目中一起删除此文件。
构建并运行。
这是Lua控制台