c++ - 如何在运行时添加代码

标签 c++ windows

我正在搜索 stackoverflow 问题,但没有一个回答了我的问题。我有一个游戏引擎,我想在运行时加载玩家 AI(用 C++ 编写)。

  1. 点击按钮,出现文件对话框
  2. 使用 AI 选择文件(.dll 或其他?)
  3. 点击“开始”按钮,游戏开始使用我添加的 AI。

AI 可以是一个方法或整个类,这并不重要。我想我应该生成 .dll,但我不确定该怎么做。这个类应该是这样的:

class PlayerAI
{
    void computeSomething(list of argument, Object& output)
    {
        // some logic
    }
}

最佳答案

假设纯 Windows 平台,因为没有指定 -

如果你想注入(inject) DLL,首先使用 LoadLibrary 函数获取它的句柄,如下所示:

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... 
}

关于c++ - 如何在运行时添加代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32972108/

相关文章:

c++ - 如何使用定时器一次使用QTextStream readline

c++ - 静态断言失败,返回 "Windows headers require the default packing option..."

java - 如何在cmd中显示阿拉伯文文本?

windows - 如何获取 gpg-agent 的配置选项? (在 Windows 版 Git 上)

php - 在 Windows 7 (XAMPP) 中安装内存缓存

c++ - 在 C++ 中获取像素颜色

c++ - 在 Mac 上使用 CDT 的 Eclipse

c++ - (使用 'while' 的插入排序)和(使用 'for' 的插入排序)之间的计算时间有何不同?

c++ - 编译失败 - 没有#include - boost

c++ - 传递多维数组时出现段错误,C++