首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在运行时添加代码

如何在运行时添加代码
EN

Stack Overflow用户
提问于 2015-10-06 14:07:42
回答 1查看 193关注 0票数 3

我在寻找堆积如山的问题,但没有人回答我的问题。我有一个游戏引擎,我想在运行时加载player AI (用c++编写)。

  1. 单击按钮,就会出现文件对话框。
  2. 选择带有AI的文件(.dll还是什么的?)
  3. 点击“开始”按钮,游戏开始使用我添加的人工智能。

AI可以是一种方法,也可以是整个类,这并不重要。我认为我应该生成.dll,但我不知道如何做到这一点。这个类应该如下所示:

代码语言:javascript
复制
class PlayerAI
{
    void computeSomething(list of argument, Object& output)
    {
        // some logic
    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-10-06 14:24:20

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

如果您想注入DLL,首先使用LoadLibrary-函数获得它的句柄,如下所示:

代码语言:javascript
复制
HINSTANCE handleLib; 
handleLib = LoadLibrary(TEXT("YourDLL.dll")); 

然后,您可以获得一个指向库中特定函数的函数指针。如下所示:

代码语言:javascript
复制
FUNC_PTR func;
func = (FUNC_PTR) GetProcAddress(handleLib, "yourFunc");

然后,您可以像这样调用该函数:

代码语言:javascript
复制
 (func) (L"TESTSTRING HERE"); 

完成后,调用FreeLibrary(libhandle)

例如,如何在VS中声明导出的函数(这是在预编译的DLL中标记函数所必需的:

代码语言:javascript
复制
__declspec(dllexport) int __cdecl yourFunc(LPWSTR someString)
{
   //Code here... 
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32972108

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档