У меня есть абстрактный класс в моей dll.
class IBase {
protected:
virtual ~IBase() = 0;
public:
virtual void f() = 0;
};
Я хочу получить IBase
в моем exe файле, который загружает dll.
Первый способ - создать следующую функцию
IBase * CreateInterface();
и добавить виртуальную функцию Release()
в IBase
.
Второй способ - создать еще одну функцию
boost::shared_ptr<IBase> CreateInterface();
и не требуется функция Release()
.
Вопросы.
1) Верно ли, что деструктор и освобождение памяти вызывается в dll (не в exe файле) во втором случае?
2) Хорошо ли работает второй случай, если exe файл и dll были скомпилированы с разными компиляторами (или разными настройками).