C++;将lua 5.2未定义的引用嵌入到'luaL_newstate';(ubuntu 14.04,Netbeans) 我尝试将Lua嵌入C++中,每次尝试编译时,都会得到这个错误: /root/NetBeansProjects/test/main.cpp:20: undefined reference to `luaL_newstate' /root/NetBeansProjects/test/main.cpp:31: undefined reference to `lua_settop' /root/NetBeansProjects/test/main.cpp:35: undefined reference to `luaL_loadfilex' /root/NetBeansProjects/test/main.cpp:35: undefined reference to `lua_pcallk' /root/NetBeansProjects/test/main.cpp:38: undefined reference to `lua_close'

C++;将lua 5.2未定义的引用嵌入到'luaL_newstate';(ubuntu 14.04,Netbeans) 我尝试将Lua嵌入C++中,每次尝试编译时,都会得到这个错误: /root/NetBeansProjects/test/main.cpp:20: undefined reference to `luaL_newstate' /root/NetBeansProjects/test/main.cpp:31: undefined reference to `lua_settop' /root/NetBeansProjects/test/main.cpp:35: undefined reference to `luaL_loadfilex' /root/NetBeansProjects/test/main.cpp:35: undefined reference to `lua_pcallk' /root/NetBeansProjects/test/main.cpp:38: undefined reference to `lua_close',c++,netbeans,lua,C++,Netbeans,Lua,我已经找了几个小时的解决方案,但找不到任何有用的 我安装了Lua:apt获取安装lua5.2 lua5.2-dev 这是我的密码: #include <cstdlib> #include <iostream> #include <string.h> #include <string> #include <lua5.2/lua.hpp> using namespace std; int main() { // create new

我已经找了几个小时的解决方案,但找不到任何有用的

我安装了Lua:apt获取安装lua5.2 lua5.2-dev

这是我的密码:

#include <cstdlib>
#include <iostream>
#include <string.h>
#include <string>
#include <lua5.2/lua.hpp>

using namespace std;

int main() {
  // create new Lua state
  lua_State *lua_state;
  lua_state = luaL_newstate();

  // load Lua libraries
  static const luaL_Reg lualibs[] ={
    { "base", luaopen_base},
    { NULL, NULL}
  };

  const luaL_Reg *lib = lualibs;
  for (; lib->func != NULL; lib++) {
    lib->func(lua_state);
    lua_settop(lua_state, 0);
  }

  // run the Lua script
  luaL_dofile(lua_state, "test.lua");

  // close the Lua state
  lua_close(lua_state);

  return 0;
}
#包括
#包括
#包括
#包括
#包括
使用名称空间std;
int main(){
//创建新的Lua状态
卢厄州*卢厄州;
lua_state=luaL_newstate();
//加载Lua库
静态常数luaL_Reg lualibs[]={
{“base”,luaopen_base},
{NULL,NULL}
};
常量luaL_Reg*lib=lualibs;
对于(;lib->func!=NULL;lib++){
lib->func(lua_状态);
lua_settop(lua_状态,0);
}
//运行Lua脚本
luaL_dofile(lua_state,“test.lua”);
//关闭Lua状态
lua_关闭(lua_州);
返回0;
}

我做错了什么?

首先感谢大家在这方面的帮助

根据我的评论,编译器将在Netbeans内部失败,除非该库实际添加到项目中

要在Netbeans内部纠正此问题,请右键单击项目(左窗格)->属性->构建下拉列表->链接器->单击库旁边的三个点->添加PkgConfig库文件->Lua5.2


您的程序现在应该可以正确编译,生活也会很好。

定位lua.hpp显示了什么?<代码> NETBease>工具>选项> C++编译器>包含目录:< /Cord>列出包含“代码> Lua5.2/Lua.Hpp的目录?查找LUAHPP(find /No.Lua.HPP)不返回任何东西……这可能是一场灾难problem@FortuneCookie101:编译器可能会抱怨缺少包含文件(
locate
在使用安装的
lua5.2-dev
更新数据库之前不会找到它)。当我尝试查找liblua.a或时,您需要使用
-llua
@siffiejoe链接到
liblua.a
(或
liblua.so
)。因此搜索没有结果,Netbeans不会抱怨包含丢失,所以我不知道发生了什么。如果我尝试使用-llua手动构建,它会抱怨找不到它。我刚找到一个名为liblua5.2的包,所以我也安装了它,-llua现在可以工作了,但是仍然没有运气。编译器继续抱怨未定义的引用。