Я работаю над кроссплатформенным проектом на C ++, под IOS и Android, и у меня следующая ситуация:
Я пишу библиотеку, используемую для загрузки графов сцен непосредственно из описывающих их XML-файлов.Библиотека имеет базовый класс узлов дерева, который реализует все функциональные возможности, чтобы сделать класс конструируемым по его имени.Затем реализуются дополнительные узлы дерева, все они происходят из этого класса базовых узлов.Это отлично работает, но есть одна проблема.Компоновщик «думает», что некоторые из моих классов не будут использоваться, и удаляет их из библиотеки.Сейчас у меня есть неприятный обходной путь, имеющий файл, который включает все существующие заголовки узлов, и в этом файле создается и изменяется один экземпляр каждого узла, чтобы указать компилятору / компоновщику, что этот класс действительно используется.
Кто-нибудь знает хороший шаблон проектирования, который можно использовать для автоматического создания необходимых экземпляров всех классов?
Я пытался создать макросы, которые помещаются в файл cpp классов, который создает статический экземпляр данного класса, но компоновщик по-прежнему обнаруживает, что на эти статические экземпляры никогда не будут ссылаться.
Или есть флаг компоновщика, который можно использовать, чтобы указать компоновщику не удалять неиспользуемые классы?Как уже упоминалось: я работаю на Android (ndk 6.0) и на IOS (xcode 4.2)
Эта проблема не будет демонстрацией для моего проекта, но было бы неплохо найти приемлемое решение здесь.