【问题标题】:How to pass an object in a .dll Class Method parameter?如何在 .dll 类方法参数中传递对象?
【发布时间】:2012-10-23 17:19:54
【问题描述】:
// 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 中,我将如何制作它以便我可以将它与其他代码一起使用并且仍然能够调用各种对象?

【问题讨论】:

    标签: c++ oop visual-c++ dll polymorphism


    【解决方案1】:

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

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

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

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

    那你可以export the function to the executable,给出例子原型:

    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
    

    【讨论】:

    • 谢谢!这真的很有帮助!教会了我很多东西!
    猜你喜欢
    • 2011-07-27
    • 1970-01-01
    • 2015-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-10
    相关资源
    最近更新 更多