如何在运行时中添加代码

How to add code in runtime

本文关键字:添加 代码 运行时      更新时间:2023-10-16

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

  1. 点击按钮,出现文件对话框
  2. 选择AI文件(.dll或其他?)
  3. 点击"开始"按钮,游戏开始使用我添加的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,那么您要查看LoadLibraryGetProcAddress。这就是运行时加载dll并从中提取特定函数的方法。

示例可以在使用运行时动态链接中找到。