- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
现在假设您有两个具有不同 lua 实例的程序。一个是主程序,第二个是你为它编写的dll。
在我的问题中,我将从现在开始将主程序命名为 main, dll i child。我们将子进程加载到主进程中,绕过它并以某种方式访问 lua_State。
我的主要问题是,我们可以在主程序运行时通过我们抓取的 lua_State 执行 lua_pcall 或 dofile 吗?
示例代码
主程序:
#include <lua.hpp>
bool loadFile(lua_State* L) {
// run the Lua script
luaL_dofile(L, "helloworld.lua");
if (lua_pcall(L, 0, 0, eh) != 0)
{
std::string err = luaL_checkstring(L, -1);
lua_pop(L, 1);
}
}
int main()
{
// create new Lua state
lua_State *lua_state;
lua_state = luaL_newstate();
loadFile(lua_state);
}
child 节目:
#include <lua.hpp>
#include "hookingLibrary.h"
typedef int(__fastcall* main_loadFile_Proto)(lua_State* L);
main_loadFile_Proto main_loadFile_Ptr;
lua_State * L lastState;
uint64_t main_loadFile_Addr = 0x0;
int main_loadFile_Detour(lua_State* L) {
lastState = L;
return main_loadFile_Ptr(L);
}
int main()
{
// detouring etc.
// I do not put detouring codes here. I am just declaring it as an
// opinion.
HookingLibrary::hook((LPVOID)(uintptr_t)main_loadFile_Addr, &main_loadFile_Detour, (LPVOID*)&main_loadFile_Ptr);
do{
Sleep(100);
}while(!lastState);
// create new Lua state
lua_State *lua_state;
lua_state = lastState;
// run the Lua script
luaL_dofile(lua_state, "helloworld.lua");
// close the Lua state
lua_close(lua_state);
}
最佳答案
Now imagine you have two programs with different lua instances. One is the main program, the second is the dll you coded for it.
这个说法不是很清楚,要看你的预期。我看到了 2 个可能的答案。
#ifndef DLL_AUGMENTED
#define DLL_AUGMENTED
#include "lua.h"
lua_State *DLL_CreateAugmentedLuaInterpreter ();
void DLL_FreeLuaInterpreter ();
#endif
并且可以被 main 使用:
#include "lua-augmented.h"
int main (int argc, char **argv)
{
lua_State *LuaState = DLL_CreateAugmentedLuaInterpreter ();
// TODO: use the augmented Lua instance
DLL_FreeLuaInterpreter(LuaState);
return 0;
}
One is the main program, the second is the dll
所写。 .在这种情况下,它更难,因为 IPC
进程间通信需要用sockets
实现或 pipes
.最好找LuaSocket
图书馆。 关于c++ - 从另一个应用程序访问 lua_State,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64129234/
我有 2 个脚本,每个都处于不同的 lua_State。 我正在尝试能够从一种状态获取变量并在另一种状态下使用它。 我下面的代码适用于单个变量和单向数组。我能否获得一些关于使其也适用于多维数组的指导?
在我的引擎中,目前,每个实体都有自己的 lua_State * 链接到它。实体基类有一个函数 linkScript(const char *scriptPath)将调用 luaL_dofile(lua
现在假设您有两个具有不同 lua 实例的程序。一个是主程序,第二个是你为它编写的dll。 在我的问题中,我将从现在开始将主程序命名为 main, dll i child。我们将子进程加载到主进程中,绕
我的服务器应用程序同时使用 LuaJit 运行 Lua 脚本。每个内部 C++ 脚本类存储自己的 lua_State 表示。 我想要实现的是实现某种共享线程池,以避免从每个正在运行的脚本中产生大量线程
对于一个学校项目,我使用 Lua 向游戏引擎添加一些脚本功能。引擎加载速度很慢,所以我希望能够重新加载脚本,而不是每次更改我的 Lua 脚本时都必须重新启动它。我希望能够以安全可靠的方式执行此操作,即
所以我正在尝试为 lua 和 irrlicht 编写一个程序,目前我正在制作一个函数来创建一个可以从命令行实时调用的网格(在本例中是一个简单的三角形)。 例如,当程序运行时,如果我在命令行中写“add
我想在我的程序中使用一个全局 lua_State* 变量,通过 initLua() 函数初始化它,并使用它从 main() 运行一些 Lua 函数。当我尝试时,Lua 代码根本无法运行。将来,我想使用
我需要使用 C++ 中的套接字将 lua_state 发送到服务器。我如何序列化 lua_State 以便它可以通过网络发送? 最佳答案 根据您的需要,您有多种选择。您可以尝试使用 Pluto Lib
我猜不会(或者,如果可能的话,几乎肯定不值得我花时间)。 我的想法是构建一个包含 offset_ptr 的镜像对象,该对象也位于类中,拥有子进程可以使用的 lua_State获取指向状态的相关指针的位
我在一个 Lua 脚本中有一个表,我想与其他 Lua 脚本共享,这些脚本在不同的 lua_State 中加载,因此它们可以调用该表中的方法。有可能吗? 最佳答案 不,除非您手动复制状态之间的数据。 L
上下文:我正在研究一组绑定(bind),我的许多函数都引用了“全局”Lua 状态。 (在我正在开发的代码中,它实际上并不是全局的,而是特定运行时实例的局部变量,因此全局,所有回调函数都可以访问共享状态
如何为 lua_State 设置一次全局 C++ 指针。并从 C 函数中获取它。 Context *context = new Context(); lua_State *lua = luaL_new
我正在为 Lua 编写 C++/OOP 包装器。我的代码是: class LuaState { boost::shared_ptr L; LuaState(): L( luaL_n
我们在多台计算机上工作,执行一个用 c/c++ 编码并使用 lua api 的程序,每台计算机都因不同的错误而崩溃。它通常要么是段错误,其回溯将我们引向 bu liblua 调用,要么是通常在尝试调用
所以有一个 main_window 类来处理所有事情,这里重要的是敌人的 Vector,敌人,当敌人死亡时,它会将一个效果对象推回到 Effect 的 vector 中。这是方便的地方 lua_Sta
我在 visual studio 2010 中使用 Lua ver 5.2.3,当我编译下面的代码时 #include "stdafx.h" #include "lua.h" #include "la
我是一名优秀的程序员,十分优秀!