将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。

个人而言,我更喜欢通过引用动态链接库将源代码添加到我的项目中。以下过程可以让你这样做。

  1. 下载源代码(http://www.lua.org/ftp/),解压缩它。

  2. 在Visual Studio中,选择“文件”>“新建”>“项目”,然后选择“Visual C++,Win32,Win32控制台应用程序”。

  3. 在您的Visual Studio项目中,添加除luac.c之外的所有源代码。还要从VS创建的文件中删除main()函数。通常会给出您使用.cpp文件扩展名指定的项目的名称。您可以从项目中将这个文件全部删除。

  4. 构建和运行。

这是Lua的控制台

+1

那么,你得到我的投票。添加.lib的确有窍门。但我现在更加好奇你的步骤来添加实际的源代码。这似乎是一个更好的解决方案。我可以将所有的.h和.c(除了luac.c)添加到我的项目中,它应该等于取决于库的权利?我应该能够保持我的应用程序完好无损,只需添加一个“Lua”过滤器来隐藏所有这些文件......如果我理解正确。 我只是想能够执行lua脚本C++ - 端用于UI加载。 另外,如果可以的话,我会加倍努力。没有足够的代表这样做。 – 2012-08-06 22:14:18

+1

是的,几乎所有你写的,只是稍作修改。要将Lua嵌入到您的应用程序中,您不会将lua.c(除了已提及的luac.c)添加到您的项目中。 lua.c文件具有它自己的main(),它可以处理控制台(获取一行文本并显示结果),这在您的应用程序中可能不需要。 – PaulPerry 2012-08-06 22:34:07

+0

这正是我想要的。谢谢! 110%满意答案。 – 2012-08-06 23:10:42