gpt4 book ai didi

c++ - 从 DLL(游戏 AI 库)调用成员函数

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:00:21 26 4
gpt4 key购买 nike

我的问题是:

我正在尝试实现一个可以在基本 EXE 中调用函数的 C++ 库。我试图在 EXE 端使用最少量的代码来使功能正常工作。

目前我有由 DLL 函数调用创建的 DLL 端实体。这些实体包含一个“ Action ”容器,它只是一个字符串映射( Action 名称)和指向 EXE 端函数的指针。这些函数中的每一个都返回 void 并将 boost::any 的容器作为参数。然后,EXE 只需在每次滴答时调用 DLL 中的更新函数,DLL 进行思考并调用适当的“操作”。

这对于正常功能来说工作正常。我怎样才能让它也适用于成员函数? (DLL 不知道函数所在的对象类型。)

如果我的问题太模糊,请告诉我,我会尽力澄清。

谢谢!

最佳答案

你想要的是 boost::bind 和 boost::function。

dll 侧映射将具有 boost::functions 而不是函数指针。客户端将使用 boost::bind 传递一个绑定(bind)对象,它可以是你想要的任何东西。

DLL 端:

typedef boost::function<void ()> CallbackFunctionType;

CallbackFunctionType gCallback;

void SetCallback(CallbackFunctionType& callback)
{
gCallback = callback;
}

void Update
{
if (condition == true)
{
gCallback();
}
}

在客户端:

class CallbackClass
{
void CallbackMember();
};

CallbackClass x;

dllInterface->SetCallback(bind(&CallbackClass::CallbackMember, &x));

dllInterface->Update();

希望这就是您要找的。

bind member

关于c++ - 从 DLL(游戏 AI 库)调用成员函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3252248/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com