DLL如何访问EXE类?

时间:2016-11-03 21:05:17

标签: c++ class methods dll undefined

我正在开展一个项目,我试图模块化一些组件。其中之一是窗口。我尝试将输入传递回主EXE,并且我通过用户界面函数执行此操作,该用户界面函数又调用主输入系统类中的主要方法。后一类太复杂了,甚至在两个系统上都没有可用的标头(取决于许多类)。

无论如何,实际问题是我无法访问输入接口类中的任何方法!

class WINDOW_EXPORT_CLASS GameWindow {
private:
    InputInterface *input;
    virtual void SetInputPointer(InputInterface *);
    ...
};

这是在我的DLL / SO文件中,我可以访问所有这些。但我无法访问输入的成员。 Bash崩溃withsymbol查找错误:

./bin/window.so: undefined symbol: _ZN14InputInterface16SetMouseInWindowEb

有没有人对如何解决此问题有任何想法?我的输入接口类标题包含在两侧。该课程包括无效功能,不会被导出(我不知道它可以。如果需要导出,请告诉你怎么样?)提前感谢!

1 个答案:

答案 0 :(得分:1)

您可以从DLL虚拟中创建要访问的方法。然后,当您调用一个函数时,将在vtable中查找该函数(已在EXE中设置),而不是通过导出的符号名称。

这要求EXE创建输入对象并将它们传递给DLL。如果DLL需要创建输入对象,则需要从EXE导出factor方法,并在运行时使用LoadLibrary等动态定位它。