如何在.dll类方法参数中传递对象

How to pass an object in a .dll Class Method parameter?

本文关键字:对象 参数 类方法 dll      更新时间:2023-10-16
// 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在可执行的内存中,因此,如果您具有结构的地址和原型,则可以直接从内存访问它。我给你一个例子:

假设您的可执行文件中有一个简单的原型:

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

您可以将其复制到DLL的源代码,因此您有声明,并让DLL知道如何在给出指针时访问成员。

然后,您可以将函数导出到可执行文件中,给出示例原型:

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