У нас есть очень большая схема (сотни глобальных элементов, тысячи глобальных сложных типов). Когда мы используем инструмент привязки данных Liquid Studio для генерации привязок данных C ++ из схемы, результирующий проект превышает лимит символов экспорта DLL в 64 КБ (65535). На самом деле, он настолько сильно превышает этот предел, что нам пришлось разделить схему на 6 различных схем (с некоторыми дублирующими сложными типами), чтобы разделить ее настолько, чтобы каждый проект оставался ниже предела экспорта символов.
Есть ли лучший вариант? Есть ли что-то, что я могу настроить в Liquid Studio, чтобы он не пытался экспортировать так много символов? Я использовал другой инструмент для точно такой же схемы, и полученный код не имеет этой проблемы, потому что он генерирует в основном абстрактные интерфейсы с фабричными классами для создания желаемых объектов. Таким образом, единственными символами, которые необходимо экспортировать, являются методы создания фабрики. Прямо сейчас мы застряли с привязками данных LiquidXML, поэтому, если мы сможем избежать всей ручной работы по разделению схемы каждый раз, когда происходит обновление, это было бы действительно хорошо.
В мастере связывания данных XML вы можете выбрать интересующие вас корневые элементы, тогда генератор будет игнорировать остальные. Это может быть очень эффективным, однако, в зависимости от структуры схемы, вы можете обнаружить, что большая часть схемы все еще потенциально доступна через небольшое количество корневых элементов.
Полученный файл .xdbproj может быть затем повторно запущен из командной строки, например, в автоматизированной сборке.
Если этот подход не работает для вас, пожалуйста, опубликуйте ссылку на схему и интересующие вас корневые элементы, и я рассмотрю ее более подробно.
Других решений пока нет …