Определение хотя бы одного открытого метода в экспортируемом классе должно иметь префикс _declspec (dllexport) для создания файла lib. Если ни один из методов не имеет этого префикса, будет доступно только объявление (т.е. файл заголовка), но создать экземпляр класса будет невозможно (для этого необходим экспортированный конструктор). Если хотя бы один метод имеет префикс _declspec (dllexport), то компилятор поймет, что пользователи dll должны иметь возможность ссылаться на эту dll. ОС загружает такие библиотеки, как только загружается exe-ссылка на них.
Вы можете рассмотреть «заводской» подход к вашей проблеме. Например, ОС Symbian реализует такой подход с полиморфными библиотеками. Для этого вам необходимо:
Объявите (т.е. файл заголовка) и определите (например, файл cpp) класс в вашей dll. Больше ничего не нужно.
Создайте "фабричную" функцию в вашей dll, которая создаст экземпляр для вашего класса и вернет указатель на него. Эта функция должна иметь префикс _declspec (dllexport).
Поделитесь своим заголовочным файлом и файлом lib со своими пользователями.
Пользователи включают заголовочный файл и ссылку на файл lib.
Пользователи вызывают фабричную функцию, чтобы создать экземпляр класса (то есть создать объект), а затем использовать его как обычный класс.
5 вышеприведенных шагов работают как шарм в Symbian OS. Вы должны попробовать сами на своей платформе и опубликовать результаты. Я, честно говоря, не пробовал это на Windows.