在共享库

时间:2018-01-11 11:14:40

标签: c++ templates shared-libraries

我正在开发一个项目,其中一个应用程序使用共享库作为插件。 我正在编写这样一个插件,并希望使用一个模板成员的类,该类在主应用程序的代码中定义:

class MyClass 
{
public:
    template <class T>
    T* doSomething();
}

我现在想知道的是:

首先编译主应用程序。这样做时,编译器每次遇到模板成员doSomething()的新实例时都会扩展类定义。应用程序链接在一起作为包含MyClass的可执行文件,以及编译器遇到的模板的所有不同实例。

现在编译了共享库(插件)。在这里,我实例化了一个未在主应用程序的代码中实例化的模板版本。

现在,插件和应用程序实际上有MyClass版本的不同版本,我不知道如何在编译时解决这个问题。

当主应用程序启动并加载共享库(插件)时会发生什么。如果我创建一个库的对象会发生什么?版本MyClass并将其传递给主应用程序 - 它们无法兼容,对吧?

0 个答案:

没有答案