在gcc升级后,我的项目由于错误而构建失败:
In file included from /usr/include/luabind/wrapper_base.hpp:31:0,
from /usr/include/luabind/back_reference.hpp:27,
from /usr/include/luabind/class.hpp:93,
from /usr/include/luabind/luabind.hpp:28,
from /home/o
使用C++,lua 5.1,luabind 0.7-0.81
尝试创建带有父类的lua类,并将其存储在luabind::object中。
Lua
class 'TestClassParent'
function TestClassParent:__init()
print('parent init\n')
end
function TestClassParent:__finalize()
print('parent finalize\n')
end
class 'TestClass' (TestClassPare
我使用Lua5.1和Boost 1.58.0来尝试构建luabind-0.7.1-rc1。环境变量都已正确设置。我已经为这个问题找了一个星期的答案,但没有成功。
每当我尝试构建luabind时,我都会得到20个相同的错误:
error C2665: 'boost::operator ==' : none of the 4 overloads could convert all the argument types
s:\luabind-0.7.1-rc1\luabind\object.hpp 542 1
所有错误似乎都是从#undef之前的最后两行抛出的:
// Needed
目前,我正在尝试构建一个使用boost的项目。但是它给出了一个错误消息,表示缺少一个操作符。
[ 6%] Building CXX object CMakeFiles/osrm-extract.dir/extractor.cpp.o
In file included from /usr/include/luabind/wrapper_base.hpp:31:0,
from /usr/include/luabind/back_reference.hpp:27,
from /usr/include/luabind/class.h
我在编译一个项目时遇到了麻烦,主要是链接对象。链接者抱怨:
$ g++ -o bin/program obj/linux64/Debug/src/main.o [... more object files ...] ../../../addons/obj/linux64/Debug/ofxLua/libs/lua/lua/lapi.o [...many other object files and libraries...]
../../../addons/obj/linux64/Debug/ofxLua/libs/luabind/src/scope.o: In function `~lua
全。我在使用luabind从lua脚本中读取数组时遇到了一个奇怪的问题。
lua脚本如下所示:
root =
{
id = 1,
id = 2,
id = 3
};
根代码如下:luabind::c++ data_root = luabind::globals(L)"root";
for (luabind::iterator i(data_root), end; i != end; ++i)
{
luabind::object data = *i;
unsigned int id = luabind::objec
我正在学习luabind,并尝试使用luabind::object从C++访问Lua中的变量。
当我将int分配给"object“时,编译失败了。
“守则”:
int main()
{
using namespace luabind;
lua_State *L;
L = luaL_newstate();
luaL_openlibs(L);
open(L);
luaL_dofile(L, "./test.lua"); // a = 5
object g = globals(L);
object num = g
我知道可以使用Luabind向Lua公开的OO系统创建Lua类:
class 'lua_testclass'
function lua_testclass:__init(name)
self.name = name
end
function lua_testclass:print()
print(self.name)
end
a = lua_testclass('example')
a:print()
但是,我无法理解如何在另一个命名空间中对类进行范围调整,因此我可以执行以下操作:
a = MyScope.lua_testclass(
当lua代码导致异常时,luabind将在堆栈上留下一条错误消息供我收集。我想知道如何保证lua堆栈在我处理异常之后将处于一个合理的状态:
我找到的例子告诉我如何使用luabind::from_stack(e.state(), -1)。这难道不把错误消息留在堆栈中吗?我不应该弹出它吗?足够从堆栈中弹出错误消息了吗?该错误会导致堆栈中留下其他垃圾吗?
如何确保在发生错误后lua状态良好?
这就是我得到的:
try {
// Do lua-stuff here that causes an exception from lua
}
catch (const luabind::error&
我注意到一个严重的性能问题,我引入了一个c++对象作为lua函数arg。
function luaFunc(someString)
print someString
end
这是相当快-不到30毫秒的100k电话。
现在,我添加了另一个对象
function luaFunc(myCObj, someString)
print somestring
myCObj:doStuff()
end
100k呼叫现在占用1秒以上。(添加另一个原语,如int或string作为arg没有性能影响!此外,将对象放入全局范围(例如,不要每次将其作为func推送,也没有性能影响--但我需要它作为参数)。
这是
我有一个C++类,我想通过一个全局变量在lua脚本中提供对它的访问,但是当我尝试使用它时,我会得到以下错误:
terminate called after throwing an instance of 'luabind::error'
what(): lua runtime error
baz.lua:3: attempt to index global 'foo' (a nil value)Aborted (core dumped)
我的Lua脚本(baz.lua)如下所示:
-- baz.lua
frames = 0
bar = foo:create