2
// 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 中,我将如何制作它以便我可以将它与其他代码一起使用并且仍然能够调用各种对象?

4

1 回答 1

4

您可以使用指针作为参数,因为 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
于 2012-11-03T12:20:30.450 回答