1

我一直在尝试这样做一天。我已经阅读了文档,并在网上搜索了帮助。我似乎无法弄清楚与预编译头文件一起使用的不同版本的 boost/lua/luabind 以及 VS2010 与 VS2012 之间的区别。

我在这里找到了一个很棒的网站 http://blog.nuclex-games.com/tutorials/cxx/luabind-introduction/ 但是当我按照这些说明进行操作时,我会收到 LNK2019 错误(我假设是因为他为VS2010。

我也发现了这个,http ://urbsch.at/?read=1 我接受了这个项目并将地址更改为我的 boost/lua 文件,它编译得很好,但是当我尝试运行使用 luabind 的项目时,我仍然收到LNK2019 错误。

我正在使用 Visual Studios 2012。如果有人可以列出一些分步说明,我将不胜感激。包括在项目属性中下载什么以及在哪里添加什么。因为在这一点上,如果它不是万无一失的,我肯定会搞砸的。

这是我经常遇到的 49 个错误之一。

1>ScriptManager.obj : 错误 LNK2019: 函数“public: __thiscall luabind::adl::index_proxy::index_proxy(class luabind::adl::object const &,struct lua_State *,char const (& )[13])" (??$?0$$BY0N@$$CBD@?$index_proxy@Vobject@adl@luabind@@@adl@luabind@@QAE@ABVobject@12@PAULua_State@@AAY0N@$$ CBD@Z)

4

2 回答 2

3

好的,我想通了(不久前)。这里是完整的,一步一步的,关于如何让它工作的傻瓜证明。

1) 从这里下载演示http://blog.nuclex-games.com/tutorials/cxx/luabind-introduction/

2) 创建一个新文件(比如“Parts”)来保存 luabind 所需的三个部分。

3) 打开上面下载的参考文件夹,然后将这 3 个文件夹移动到您刚刚创建的“Parts”文件夹中。

4) 现在您需要为 Lua 和 LuaBind 重新编译新的 .lib 文件。打开上面下载的 LibrarySources.7z 文件。

4) 创建一个名为 Lua 的新 Visual Studio 2012 项目,打开将“LibrarySources.7z/lua-5.2.0/src”中的所有文件解压缩到 Visual Studio 通常放置 .cpp 和 .h 文件的位置。

5)将文件添加到项目中(项目资源管理器头文件夹中的.h文件和源文件夹中的.c文件。)

6) 转到 SolutionExplorer->Properties->General->Configuration_Type 并将其设置为静态库 (.lib)

7) 编译项目。

8) 进入你的 lua 项目的 debug 文件夹,并归档你创建的 lua.lib 文件。

9)现在转到“Parts/Lua”中创建的“Parts”文件夹,您应该在那里看到 2 个文件夹,上面写着 msvc-10.0-x64/86,创建一个新文件夹,上面写着 msvc-11.0-x86 并放入 lua。您刚刚在其中创建的 lib 文件。

10) 对于 luabind,您需要做同样的事情,但是您只需要将 src 文件夹从 luabind 提取到您的项目中。

11) 现在在项目属性 C/C++ -> Additional Include Directories 中,添加“C:/Parts/boost/include”“C:/Parts/lua/include”和“C:/Parts/luabind/include”

12) 现在转到链接器->常规->附加库目录并添加“C:/Parts/lua/msvc-11.0-x86”

13)现在回到解决方案资源管理器->属性->常规并将其更改为静态库。

14) 编译它,转到它的调试文件夹并将您创建的 luabind.lib 添加到 parts/luabind/msvs-11.0-x86 中,就像您为 lua 所做的那样。

15) 现在在你想要使用 luabind 的项目中,转到 Properties->C/C++ -> General 并添加 "C:/Parts/boost/include" "C:/Parts/lua/include" 和 " C:/Parts/luabind/include"

16) 转到属性->链接器->通用->附加库目录并将地址添加到您刚刚创建的两个 .lib 文件中。

鳍。

于 2013-09-01T21:24:01.093 回答
0

我现在无法发布完整的答案,因为我正在打电话,但我必须做一些事情才能让 luabind 正常工作。

  1. Luabind 0.9.1 不适用于 lua 5.2.x。仅适用于 5.1.x。

  2. 如果您正在构建 lua,请不要使用 c++ 编译器。Lua bind 使用 extern C 导入 lua 头文件,使用 c++ 会导致一些冲突。

  3. 如果您使用的是 lua 的预构建,请确保它是使用 vs2012 构建的。

于 2013-08-18T02:53:18.133 回答