Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Нужен совет экспертов по поводу ошибки. was compiled with a different version of 
:(
    Опции темы
Bose
Дата 28.10.2008, 20:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1458
Регистрация: 5.3.2005
Где: Riga, Latvia

Репутация: 23
Всего: 51



Помогите пожалуйста разобраться в ситуации

Я использую FastMM в своих проектах. При этом я не хочу добавлять путь до FastMM4.pas в Library Path, чтобы не мучаться при отладке. Для этого я создал фиктивный package FastMM.dpk(runonly), который включает в себя тольк Fastmm4.dpk и компилирую FastMM со всеми остальными package-ами. А проекты подключают к себе уже fastmm4.dcu. Но в Delphi 2009 эта схема перестала работать. При включении FastMM4.dcu в проект, Delphi выдаёт ошибку 
[DCC Fatal Error] F2051 Unit FastMM4 was compiled with a different version of System.TObject.InstanceSize. 

Причём, ругается он только если я собираю проект с Debug Build Configuration. С Release всё собирается нормально. 
Выяснил, что проблема возникает, когда проект ищет .dcu от vcl в $(BDS)\Lib\Debug\ вместо $(BDS)\Lib\

Получается, что System.TObject.InstanceSize в $(BDS)\Lib\ и $(BDS)\Lib\Debug в чём-то существенно различаются.

Версия Дельфи: CodeGear™ Delphi® 2009  Version 12.0.3170.16989
Версия FastMM: Fast Memory Manager 4.90

C другими unit-ами эту проблему повторить не получилось. FastMM4.pas использует только один стандарнтый юнит - Windows. 

Сейчас я в раздумиях, чей это баг: мой, FastMM-a или Delphi? 

Буду очень признателен за разъяснения об отличиях между $(BDS)\Lib\Debug\ и $(BDS)\Lib\  а также за версии о причинах ошибки. 

PM MAIL WWW Skype   Вверх
Alexeis
Дата 28.10.2008, 20:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 109
Всего: 459



DCUшки там разные. Вероятно встроенный линкер не может разрулить все связи в FastMM4.dcu, либо набор параметров функций отличается. Но скорее всего первое. Такое бывает иногда, когда используются DCU от разных версий Delphi.


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Bose
Дата 28.10.2008, 21:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1458
Регистрация: 5.3.2005
Где: Riga, Latvia

Репутация: 23
Всего: 51



Цитата(Alexeis @  28.10.2008,  20:57 Найти цитируемый пост)
DCUшки там разные. Вероятно встроенный линкер не может разрулить все связи в FastMM4.dcu, либо набор параметров функций отличается. Но скорее всего первое.
 

А как думаешь, это может быть багом Delphi? В смысле, стоит ли об этом в QualityCentral писать.


Натолкнул на мысль, попробовать скомпилировать FastMM с исходником Windows.pas.


Цитата(Alexeis @  28.10.2008,  20:57 Найти цитируемый пост)
Такое бывает иногда, когда используются DCU от разных версий Delphi. 


А ещё после установки апдейтов.
PM MAIL WWW Skype   Вверх
Alexeis
Дата 28.10.2008, 21:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 109
Всего: 459



Цитата(Bose @  28.10.2008,  20:07 Найти цитируемый пост)
А как думаешь, это может быть багом Delphi? В смысле, стоит ли об этом в QualityCentral писать.

  Ну все может быть, но маловероятно. Работа у линкера сравнительно простая, чет я такого не припомню, глюк был именно по его части. Оптимизатор да, может глюкануть и чего-то не додать в объектный файл, а линкер соответственно не  может связать. Попробуй отключить оптимизацию.


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Bose
Дата 28.10.2008, 22:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1458
Регистрация: 5.3.2005
Где: Riga, Latvia

Репутация: 23
Всего: 51



Цитата(Alexeis @  28.10.2008,  21:53 Найти цитируемый пост)
Попробуй отключить оптимизацию. 

Я перепробовал все комбинации с оптимизацией и включением Debug information как в FastMM так и в проект. Не влияет.

Я задал этот же вопрос на DelphiKingdom. Пользователь DRON предложил такое объяснение:
Цитата

Цитата(DRON)

Буду очень признателен за разъяснения об отличиях между $(BDS)\Lib\Debug\ и $(BDS)\Lib\  а также за версии о причинах ошибки.

В 2009-ой версии метод InstanceSize был впервые объявлен с директивой inline, так что, скорее всего, дело в том, что при компиляции FastMM этот метод инлайнится в FastMM4.dcu, а в отладочной версии System.dcu inline отключен (например через {$INLINE OFF} или параметр dcc32.exe) для упрощения отладки.


PM MAIL WWW Skype   Вверх
tHE_EGOiSTE
Дата 29.10.2008, 01:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 60
Регистрация: 19.10.2007
Где: Vyksa

Репутация: 1
Всего: 1



НЕ помню, но где то читал, что Delphi не правильно интерпретирует код dcu, если они отличны от исходной версии среды Delphi. Как то так ....  smile 
PM MAIL WWW ICQ Skype   Вверх
CTapMex
Дата 29.10.2008, 15:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 55
Регистрация: 20.2.2007

Репутация: нет
Всего: нет



как вариант предложил бы поставить обновление на 2009 делфю. они есть, так сказать не совсем официальные, с непонятным статусом - толи бета, толи релиз кандитат. последняя версия 12.0.3210.17555
не знаю можно тут такое постить или нет. на всякий случай не буду, если надо то личкой
PM MAIL   Вверх
Bose
Дата 11.11.2008, 16:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1458
Регистрация: 5.3.2005
Где: Riga, Latvia

Репутация: 23
Всего: 51



Цитата(CTapMex @  29.10.2008,  15:29 Найти цитируемый пост)
как вариант предложил бы поставить обновление на 2009 делфю

поставил официальный, но дело не в этом.


В общем, я сам и стормозил, когда пытался собрать Debug конфигурацию без $(BDS)\Lib\Debug\ 

Проблема решилась после создания двух версий FastMM.dcu - одна для debug-сборки, другая для release. (подробнее о различиях в этом топике)
PM MAIL WWW Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1014 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.