У меня есть приложение и несколько плагинов в DLL-файлах. Плагины используют символы из
приложение через экспортную библиотеку. Приложение связывает несколько статических библиотек, и именно отсюда происходит большинство символов. Это работает нормально, пока приложение использует символ. Если символ там не используется, я получаю ошибки компоновщика при компиляции DLL.
Как заставить экспорт символов, используемых только в плагинах?
Для запуска экспорта я пробовал что-то вроде этого:
class MyClassExporter
{
MyClass mInstance;
public:
MyClassExporter() {}
};
static MyClassExporter TheMyClassExporter;
в одной из статических библиотек, из которой сделано приложение для форсирования экспорта, который не сработал.
В ответ Грегу (спасибо за ответ) и уточняю: класс, для которого я хочу форсировать экспорт, это MyClass (для которого определен __declspec (...), в зависимости от того, хотите ли я экспортировать или импортировать). MyClassExport был моей попыткой принудительно включить в приложение неиспользуемые (с точки зрения приложения) символы. Я хочу «дотронуться» до символов, чтобы компоновщик распознал их как использованные и включил их в приложение, чтобы он в свою очередь мог экспортировать их в мои плагины. Связывать статические библиотеки в плагины не вариант, так как они содержат синглеты, которые будут дублироваться (у приложений и DLL есть свои копии статических переменных).