Я пытаюсь создать DLL, которая будет управлять различными параметрами конфигурации для моего проекта как Singleton.Чистые виртуальные функции, не определенные в Singleton DLL
Я следовал метод, предложенный here in the chosen answer, как показано ниже:
IBuildConfiguration.h
#if defined(BUILD_CONFIGURATION_LIBRARY_EXPORT)
# define BUILD_CONFIGURATION_API __declspec(dllexport)
#else
# define BUILD_CONFIGURATION_API __declspec(dllimport)
#endif // BUILD_CONFIGURATION_LIBRARY_EXPORT
class IBuildConfiguration
{
public:
virtual int foo(void) = 0;
};
BUILD_CONFIGURATION_API IBuildConfiguration& Instance(void);
BuildConfiguration.h
class BuildConfiguration : public IBuildConfiguration
{
public:
BuildConfiguration();
~BuildConfiguration();
virtual int foo(void);
};
Edit: Забыл включить я зация Instance()
BuildConfiguration.cpp
int BuildConfiguration::foo(void)
{
return 1; //just a silly example
}
IBuildConfiguration& Instance(void)
{
static BuildConfiguration instance;
return instance;
}
Теперь в Visual C++ 6, я добавил к моему проекту зависимости от этой новой DLL, и я включил IBuildConfiguration заголовка в моем источнике как таковой:
SystemCtrl.cpp
#include "../../BuildConfiguration/IBuildConfiguration.h"
IBuildConfiguration buildConfig = Instance();
Наша библиотека успешно сработала, однако проект, который ее использует, не работает.
К сожалению, это приводит к следующей ошибке:
int __thiscall IBuildConfiguration::foo(void)' : pure virtual function was not defined
копирование DLL и LIB файлы в проект, кажется, не решить эту проблему.
Я думаю, что метод Instance пытается создать экземпляр вашего базового класса. что невозможно сделать по причине, о которой сообщается. – Rob
@Rob Смотрите мой комментарий ниже; мой плохой, я не обеспечил реализацию 'Instance()' – audiFanatic