如何在运行时中添加代码
How to add code in runtime
我正在搜索stackoverflow问题,但没有一个回答我的问题。我有一个游戏引擎,我想在运行时加载玩家AI(用c++编写)。
- 点击按钮,出现文件对话框
- 选择AI文件(.dll或其他?)
- 点击"开始"按钮,游戏开始使用我添加的AI。
AI可以是一个方法或整个类,这无关紧要。我想我应该生成。dll,但我不知道如何做到这一点。这个类应该是这样的:
class PlayerAI
{
void computeSomething(list of argument, Object& output)
{
// some logic
}
}
假设为纯Windows平台,因为没有指定-
如果你想注入DLL,首先使用LoadLibrary-function获得它的句柄,像这样:
HINSTANCE handleLib;
handleLib = LoadLibrary(TEXT("YourDLL.dll"));
然后,您可以获得指向库中特定函数的函数指针。像这样:
FUNC_PTR func;
func = (FUNC_PTR) GetProcAddress(handleLib, "yourFunc");
然后你可以像这样调用这个函数:
(func) (L"TESTSTRING HERE");
完成后,调用FreeLibrary(libhandle)
如何将函数声明为导出是在VS中,例如这样(这需要在您预编译的DLL中标记您的函数:
__declspec(dllexport) int __cdecl yourFunc(LPWSTR someString)
{
//Code here...
}
既然您提到已经编译的dll,那么您要查看LoadLibrary
和GetProcAddress
。这就是运行时加载dll并从中提取特定函数的方法。
示例可以在使用运行时动态链接中找到。
相关文章:
- 如何通过替换顺序代码的while循环来添加OpenMP for循环
- C++(.cpp文件和.h文件)拆分代码并添加一个函数,提取 - 这很容易吗?
- 尝试将另一个子句添加到代码中时出错
- Printf 命令不打印时添加了查找常见除数的新代码
- 如果我在下面的代码片段中添加"delete[] d;",为什么我得到零?
- 堆栈粉碎 在我在代码中添加新变量以及一些操作后C++检测到
- 添加新行时工作代码引发异常.调试技巧?
- 如何将默认代码添加到我在 vim 中打开的每个 cpp 文件?
- 在大括号内添加语句会更改代码功能?
- 使用哪种模式来执行新代码,只需添加基类的新子类?
- 我应该在服务模板中的什么位置添加自己的代码?
- 为每个枚举器添加代码
- 为什么添加代码会破坏工作,即使它没有执行?
- 如何在C 中添加代码延迟
- 向 QT C++添加代码示例
- 带有严重错误处理的简单添加代码
- 如何在运行时中添加代码
- 在Model上添加操作而不向Model中添加代码
- 向Jetbrains Clion添加c++代码片段
- 如何使用c++模板根据函数参数值添加代码片段