Я создаю программу, которая использует плагины. К сожалению, динамическое связывание инфраструктуры плагинов вытесняет RTL и VCL из моего EXE-файла проекта в версии BPL, и у них не включена отладочная информация.
Итак, я построил среду тестирования, которая статически связывается с моими плагинами, чтобы я мог видеть, что я делаю, во время трассировки кода. Но теперь, каждый раз, когда я пытаюсь перекомпилировать, я получаю сообщение об ошибке: «unit turbu_skills был скомпилирован с другой версией turbu_database.GDatabase»
Я видел эту ошибку раньше, но только когда менял вещи, которые, вероятно, не должны были быть, например библиотеки RTL или VCL. Я не понимаю, почему это происходит с моим собственным кодом. Единицы turbu_skills и turbu_database - это те единицы, которые я написал сам. GDatabase - это глобальная одноэлементная переменная, определение класса которой я не менял уже несколько недель. Любое изменение, которое вызывает перекомпиляцию, вызывает эту ошибку, даже если я не коснулся ничего в одном из модулей.
Выполнение полной сборки (SHIFT-F9) приводит к правильной компиляции. Но если я затем нажимаю SPACE в единице ( любая единица) и нажимаю F9, я получаю ошибку снова. Что происходит и как мне это остановить? Это не происходит в основном приложении, только в среде тестирования.
РЕДАКТИРОВАТЬ: У меня есть источник для всех моих подразделений. Удаление DCU и подобных файлов не помогает. Копирование всего проекта на другой компьютер, удаление всех DCU и сборка там не помогают. Существует объективный, воспроизводимый конфликт между макетом моей программы и компилятором, и я хочу от него избавиться.
Источник можно найти по адресу http://www.turbu -rpg.com / downloads / Turbu_source_setup.exe , если кто-то захочет его протестировать. Требуется Delphi 2009 с уже установленной JVCL; Пакет установщика позаботится обо всем остальном. Возможно, наличие исходного кода поможет кому-то отследить это. Я, конечно, на это надеюсь, потому что, где бы ни была проблема, это вне меня. Проблема может быть найдена в test.exe, а также в turbu.exe в turbu.groupproj.
РЕДАКТИРОВАТЬ 2: Оказывается, это была еще одна проблема дженериков между единицами. Grr. Мне удалось закодировать обходной путь. Я просто надеюсь, что они скоро исправят проблемы с дженериками.