从DLL加载派生类不包含派生属性

时间:2015-11-30 12:54:16

标签: c++ oop dll

我正在使用DLL,我是新手。 我正在尝试加载从我的接口继承的派生类

class IModule{
public:
    virtual ~IModule(); // <= important!
    vector<String> getFunctions();


protected:
    vector<String> mFunctions;
};

class DllModule : public IModule {
public:
    DllModule() {
        this->mFunctions.push_back("Algorythm");

    };
private:
    int test;
};

这里我想发送指向我的应用程序的指针

extern "C" {
    IModule* CreateModule() {
        // call the constructor of the actual implementation
        IModule * module = new DllModule;
        // return the created function
        return module;
    }
}

我加载后的应用程序

f_GetFunctions funci = (f_GetFunctions)GetProcAddress(hGetProcIDDLL, "CreateModule");
    if (!funci) {
        std::cout << "Could not locate function CreateModule" << std::endl;
        //return EXIT_FAILURE;
        return nullptr;
    }
    IModule* module = funci();

我希望mFunction已填充,但它像新的IModule实例而不是从DLL加载的DllModule。我想要的只是在mFunctions循环并在QT_App中填充我的组合框。

有人能帮助我吗?我的期望有什么不对?

非常感谢。

(一切都在Windows10中完成)

编辑1:将类型更改为最小(对不起) 功能=&gt;串

编辑2:我完全忘记了分配指针

1 个答案:

答案 0 :(得分:0)

我能够绕过我的问题。 我使用了QLibrary.Load()而不是LoadLibraryA,它完全符合我的要求。