gpt4 book ai didi

c++ - 如何在 .dll 类方法参数中传递对象?

转载 作者:搜寻专家 更新时间:2023-10-31 01:12:57 25 4
gpt4 key购买 nike

// SharpEngine.h

namespace SharpEngine {
class SharpInst {
public:
// Insert Game Engine Code.
// Use this format
// static __declspec(dllexport) type function(parameters);

static __declspec(dllexport) void saveGame(object_as_param_here)
};
}

在上面写着“object_as_param_here”的地方,我需要传递一个对象,以便函数可以访问包含等级、经验、健康等数据的对象。

这也在一个 .dll 中,我如何制作它以便我可以将它与其他代码一起使用并且仍然能够调用各种对象?

最佳答案

你可以使用指针作为参数,因为DLL在可执行内存中,所以如果你有结构的地址和原型(prototype),你可以直接从内存中访问它。我给你举个例子:

假设您的可执行文件中有这个简单的原型(prototype):

class Player
{
public:
int money;
float life;
char name[16];
};

你可以把它复制到DLL的源代码中,这样你就有了一个声明,让DLL在给出指针时知道如何访问成员。

然后你可以export the function to the executable ,给出示例原型(prototype):

static __declspec(dllexport) void saveGame(Player *data);

现在您可以从可执行文件中调用 DLL 的函数,如下所示:

Player *player = new Player;
player->money = 50000;
player->life = 100.0f;
saveGame(player);

或者如果你在可执行代码中不使用播放器的类作为指针,你仍然可以传递它的地址:

Player player;
player.money = 50000;
player.life = 100.0f;
saveGame(&player);

在您的 saveGame 函数中,您可以将结构作为指针访问:

data->money

关于c++ - 如何在 .dll 类方法参数中传递对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13205566/

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