无法将Lua for Windows嵌入到C++程序中

Dea*_*ght 3 c++ windows lua

这是我发现自己无法使用正常的谷歌搜索/堆栈溢出/ youtubing例程的第一个问题.

我正在尝试在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__
Run Code Online (Sandbox Code Playgroud)

这是我得到的错误:

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和视觉工作室环境.

顶部的pragma注释行是我在另一个帖子中看到的.无论有没有,我都会得到同样的错误.

我已进入我的visual studio C++目录区域,并将lua include添加到includes和lua lib到库.

所以看起来我的程序正在看到.h并看到符号.但由于某种原因,它没有获得函数的.cpp实现.这就是为什么我希望包含.dll直接有助于解决问题,但事实并非如此.

所以,我觉得我已经筋疲力尽了我自己解决这个问题的所有选择.我希望有人能够帮助我在这里前进.Lua看起来像一个很棒的语言来编写脚本,我想让我的环境平稳地进行开发.

我希望这只是我的一些愚蠢的错误.我相信我提供了尽可能多的信息.如果您需要更多细节,我会更新信息,如果我能提供.

EDIT1

尝试了这个解决方案无法在VS2010中用lua构建lua项目,怀疑库问题

那也行不通.

Pau*_*rry 9

您需要拥有库(.LIB)文件并将其添加到VS. 使用Project> Properties并转到Linker> Input并将完整的.lib文件名添加到"Additional Dependencies"行.请注意,.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控制台

  • 是的,几乎是你写的,略有修改.要在您的应用程序中嵌入Lua,您不会将lua.c(除了已经提到的luac.c之外)添加到您的项目中.lua.c文件有自己的main()来处理控制台(获取一行文本并显示结果),你可能不希望在自己的应用程序中使用它. (2认同)