草庐IT

lua_call

全部标签

c++ - 调试嵌入式 Lua 5.2.2 代码

如何调试嵌入在我的C++应用程序中的Lua5.2.2代码?我已经看过这个question并且其中提供的所有IDE都处理5.1及更低版本,当我尝试将它们与5.2.2一起使用时,它们会崩溃。 最佳答案 您应该能够使用ZeroBraneStudio调试您的应用程序通过关注instructionsforLua5.2debugging.请注意,您需要针对Lua5.2编译luasocket。(您看到的崩溃可能是因为您的应用程序加载了针对Lua5.1编译的luasocket,而后者又加载了Lua5.1DLL或无法找到所需的符号。)如果您不想编译l

c++ - 使用 float 给出 "call to overloaded function is ambiguous"错误

这个问题在这里已经有了答案:Referencetofunctionisambiguous[duplicate](2个答案)关闭6年前。我正在重载函数add(),但是当我使用float数据类型时它显示错误。但是,当我将其更改为double时,它工作正常。为什么float会导致错误?代码是:#includeusingnamespacestd;classstudents{private:inti;floatf;public:voidadd(intb){i=b;cout错误:Infunction'intmain()':[Error]callofoverloaded'add(double)'is

c++ - 为什么这个 "call"断言看到两个参数而不是一个?

给定thistestprogram:#include#include#includeconststd::string&const_string="bla";std::stringconst&string_const="blabla";static_assert(std::is_same::value,"Uhoh");intmain(){assert(std::is_same::value);}它使用C的断言断言两种类型在编译时和运行时相同。所有Clang、MSVC2015和GCC都报告相同的错误,所以我很确定it'sme:main.cpp:13:49:error:toomanyargu

c++ - Lua 绑定(bind)到 C++ 和垃圾回收

好的,这是我遇到的问题。我有一个渲染引擎的Lua绑定(bind),它有一个内部渲染管理器,它自己跟踪渲染场景的指针并管理它们。问题是,当我从Lua使用它时,如果我不保留对添加到C++渲染管理器的每个对象的Lua引用,它就会开始垃圾收集指针,当然会导致崩溃。我不是特别想保存对我创建的每一件东西的每一个引用。有没有办法强制Lua不对某些东西进行垃圾回收?有没有其他方法可以解决这个问题?我正在使用SWIG生成Lua绑定(bind)。 最佳答案 防止Lua对对象进行垃圾回收的一个简单方法是将该对象放入一个表中(称之为uncollection

C++ googlemocks : Getting a stack trace of an uninitialized call

模拟类看起来像这样:构造模拟类{MOCK_METHOD0(foo,void());};如果我忘记在模拟对象上设置预期的调用,我会得到这样的结果:GMOCKWARNING:Uninterestingmockfunctioncall-returningdirectly.Functioncall:foo()Stacktrace:并且堆栈跟踪为空。那么,为了获取堆栈跟踪必须做什么? 最佳答案 这描述了here:YoucancontrolhowmuchGoogleMocktellsyouusingthe--gmock_verbose=LEVE

C++ : Calling a child method from parent instantiation

在我的代码中,我实现了这些类:classA{public:virtualintfun(){return0;}}classB:publicA{public:virtualintfun(){return1;}}还有这些函数:voidoperation(Aa){printf("%d\n",a.fun());}intmain(){Bb;operation(b);return0;}可以看到,B类继承了A类,并实现了虚继承方法fun()。主类调用一个以A为参数的函数,并调用fun()方法,参数为B对象。在执行时,我希望打印字符串"1",但它是"0"(即使它是传递给的B对象操作()).我需要这样做,

c++ - GMock - 使用 ON_CALL 为重载方法返回默认值

我正在尝试为包含三个重载方法的类编写模拟,即:#include#includeusing::testing::_;using::testing::Return;using::testing::A;using::testing::ByRef;using::testing::Ref;using::testing::TypedEq;structFoo{intfooMethod(constint&intParam){return0;}intfooMethod(constfloat&floatParam){return0;}intfooMethod(conststd::string&string

C++加密和解密Lua文件

我有一个用C++编写的程序(一个小游戏),它从Lua文件(它们基本上是程序的模块)获取配置。例如,程序从Lua文件中获取其名称、版本、允许和不允许执行的操作以及播放器可以执行的操作。问题是当我开始将这个小游戏分发给几个人时,他们可以配置我不想发生的Lua文件,所以我想过加密它们然后在程序启动时解密它们但我无法理解如何以何种方式真正做到这一点。总而言之,这是否像我想象的那样是一项相当简单的任务?我的看法是这样的:用某个程序以某种加密方式对lua文件进行加密。将C++代码写入程序,首先解密Lua文件,然后开始读取它们。这个概念正确吗?加密本身可以尽可能弱,只要它有效。

c++ - lua_open 使用 luaJIT 返回 null

使用最近的luaJITlua_open返回null。常规lua库不会发生这种情况。lua_State*L=lua_open();std::cout输出:0x0如何让luaJIT工作?中南合作:#include#include//linkedlibrary:libluajit-5.1.aintmain(intargc,constchar*argv[]){lua_State*L=luaL_newstate();//lua_open();std::cout附加信息:使用make和makeinstall从源代码构建在OSX10.9上(尝试了2.0.2和git)。使用编译器:$cc--versi

c++ - Qt 5.5 与 qmake : Linker cannot resolve OpenGL function calls

当使用Qt5.5、qmake和MSVC13编译带有一些基本OpenGL函数调用的基本样板Qt应用程序时,出现以下链接器错误:glwidget.obj:-1:error:LNK2019:unresolvedexternalsymbol__imp__glClear@4referencedinfunction"public:virtualvoid__thiscallGLWidget::initializeGL(void)"(?initializeGL@GLWidget@@UAEXXZ)glwidget.obj:-1:error:LNK2019:unresolvedexternalsymbol