将Lua for Windows安装到C++程序中遇到问题
这是我发现自己无法使用我的普通搜索/堆栈溢出/ youtubing例程的底部的第一个问题。将Lua for Windows安装到C++程序中遇到问题
我想编译一个C++环境中的最小Lua程序,以确保我的环境已准备好开发。 Lua语言稍后将用于我的C++游戏的用户界面编程。
首先在我的环境中的一些基本信息:
的Windows 7 64位
Visual Studio 2010中
的Lua为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__
这里是我得到的错误:不再使用,所以我尝试了newstate功能
我看了一下lua_open()(和一些其他功能):
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
事情我已经试过代替。我犯了同样的错误。这比任何事情都更符合健康检查。我使用5.1而不是5.2,所以我不认为这真的很重要。
我也读过这个线程Cannot link a minimal Lua program,但它似乎并没有帮助我,因为我没有运行与OP相同的环境。我在一个简单的Windows 7和Visual Studio环境。
顶部附注注释行是我在另一个线程中看到的。不管有没有,我都会得到相同的错误。
我已经进入了我的visual studio C++目录区,并将lua include添加到了libraries和lua lib库中。
因此,看起来我的程序看到.h并看到符号。但由于某些原因,它没有得到功能的.cpp实现。这就是为什么我希望直接包含该.dll将有助于解决问题,但它没有。
所以,我觉得我已经用尽了所有的选择来解决这个问题。我希望有人能够帮助我在这里前进。 Lua看起来像是一种非常棒的语言,我希望让自己的环境摆脱困境以求发展。
我希望这只是我的一些愚蠢的错误。我相信我尽可能提供了尽可能多的信息。如果你需要更多的细节,我会更新信息,如果我能提供。
EDIT1
试图在这个Can't build lua a project with lua in VS2010, library issue suspected
的解决方案,也不能工作。
您需要有库(.LIB)文件并将其添加到VS.使用“项目”>“属性”,然后转到“链接器”>“输入”,并将完整的.lib文件名添加到“其他依赖项”行。请注意,.LIB与.LIB不同。DLL。
个人而言,我更喜欢通过引用动态链接库将源代码添加到我的项目中。以下过程可以让你这样做。
下载源代码(http://www.lua.org/ftp/),解压缩它。
在Visual Studio中,选择“文件”>“新建”>“项目”,然后选择“Visual C++,Win32,Win32控制台应用程序”。
在您的Visual Studio项目中,添加除luac.c之外的所有源代码。还要从VS创建的文件中删除main()函数。通常会给出您使用.cpp文件扩展名指定的项目的名称。您可以从项目中将这个文件全部删除。
构建和运行。
这是Lua的控制台
那么,你得到我的投票。添加.lib的确有窍门。但我现在更加好奇你的步骤来添加实际的源代码。这似乎是一个更好的解决方案。我可以将所有的.h和.c(除了luac.c)添加到我的项目中,它应该等于取决于库的权利?我应该能够保持我的应用程序完好无损,只需添加一个“Lua”过滤器来隐藏所有这些文件......如果我理解正确。 我只是想能够执行lua脚本C++ - 端用于UI加载。 另外,如果可以的话,我会加倍努力。没有足够的代表这样做。 – 2012-08-06 22:14:18
是的,几乎所有你写的,只是稍作修改。要将Lua嵌入到您的应用程序中,您不会将lua.c(除了已提及的luac.c)添加到您的项目中。 lua.c文件具有它自己的main(),它可以处理控制台(获取一行文本并显示结果),这在您的应用程序中可能不需要。 – PaulPerry 2012-08-06 22:34:07
这正是我想要的。谢谢! 110%满意答案。 – 2012-08-06 23:10:42