Por que minhas unidades são “compiladas com uma versão diferente” dos meus próprios arquivos?
Estou construindo um programa que usa plugins. Infelizmente, o vínculo dinâmico da estrutura de plugins força a RTL e a VCL do EXE do meu projeto para as versões BPL, e elas não têm as informações de depuração ativadas.
Então, construí uma estrutura de teste que vincula estaticamente aos meus plugins para que eu possa ver o que estou fazendo enquanto rastreio o código. Mas agora, toda vez que tento recompilar, recebo um erro: "a unidade turbu_skills foi compilada com uma versão diferente do turbu_database.GDatabase"
Eu já vi esse erro antes, mas somente quando mudei as coisas provavelmente não deveria ter acontecido, como as bibliotecas RTL ou VCL. Não entendo por que está fazendo isso com meu próprio código. As unidades turbu_skills e turbu_database são as duas unidades que escrevi para mim. GDatabase é uma variável global singleton, cuja definição de classe não mudo há semanas. Qualquer alteração que desencadeia uma recompilação causa esse erro, mesmo que eu não tenha tocado em nada em nenhuma das unidades.
Fazer uma compilação completa (SHIFT-F9) faz com que seja compilado corretamente. Mas se eu pressionarESPAÇO em uma unidade (qualquer ) e pressione F9, recebo o erro novamente. O que está acontecendo e como eu paro? Isso não acontece no aplicativo principal, apenas na estrutura de teste.
EDIT: Eu tenho a fonte para todas as minhas unidades. Excluir DCUs e arquivos semelhantes não ajuda. Copiar o projeto inteiro para um computador diferente, excluir todas as DCUs e criar lá não ajuda. Há um conflito objetivo e reproduzível entre o layout do meu programa e o compilador, e eu quero me livrar dele.
A fonte pode ser encontrada emhttp://www.turbu-rpg.com/downloads/Turbu_source_setup.exe se alguém quiser testá-lo. Requer Delphi 2009 com a JVCL já instalada; o pacote do instalador cuidará do resto. Talvez ter o código fonte disponível ajude alguém a rastrear isso. Eu certamente espero que sim, porque onde quer que esteja o problema, está além de mim. O problema pode ser encontrado no testing.exe e também no turbu.exe no turbu.groupproj.
EDIT 2: Acontece que esse foi outro problema de genéricos entre unidades. Grr. Eu consegui codificar uma solução alternativa. Só espero que eles resolvam os problemas genéricos em breve.