![]() |
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]() ![]() ![]() |
|
Bose |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 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\ а также за версии о причинах ошибки. |
|||
|
||||
Alexeis |
|
|||
![]() Амеба ![]() Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 109 Всего: 459 |
DCUшки там разные. Вероятно встроенный линкер не может разрулить все связи в FastMM4.dcu, либо набор параметров функций отличается. Но скорее всего первое. Такое бывает иногда, когда используются DCU от разных версий Delphi.
-------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
Bose |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1458 Регистрация: 5.3.2005 Где: Riga, Latvia Репутация: 23 Всего: 51 |
А как думаешь, это может быть багом Delphi? В смысле, стоит ли об этом в QualityCentral писать. Натолкнул на мысль, попробовать скомпилировать FastMM с исходником Windows.pas.
А ещё после установки апдейтов. |
||||
|
|||||
Alexeis |
|
|||
![]() Амеба ![]() Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 109 Всего: 459 |
Ну все может быть, но маловероятно. Работа у линкера сравнительно простая, чет я такого не припомню, глюк был именно по его части. Оптимизатор да, может глюкануть и чего-то не додать в объектный файл, а линкер соответственно не может связать. Попробуй отключить оптимизацию. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
Bose |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1458 Регистрация: 5.3.2005 Где: Riga, Latvia Репутация: 23 Всего: 51 |
Я перепробовал все комбинации с оптимизацией и включением Debug information как в FastMM так и в проект. Не влияет. Я задал этот же вопрос на DelphiKingdom. Пользователь DRON предложил такое объяснение:
|
||||
|
|||||
tHE_EGOiSTE |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 60 Регистрация: 19.10.2007 Где: Vyksa Репутация: 1 Всего: 1 |
НЕ помню, но где то читал, что Delphi не правильно интерпретирует код dcu, если они отличны от исходной версии среды Delphi. Как то так ....
![]() |
|||
|
||||
CTapMex |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 55 Регистрация: 20.2.2007 Репутация: нет Всего: нет |
как вариант предложил бы поставить обновление на 2009 делфю. они есть, так сказать не совсем официальные, с непонятным статусом - толи бета, толи релиз кандитат. последняя версия 12.0.3210.17555
не знаю можно тут такое постить или нет. на всякий случай не буду, если надо то личкой |
|||
|
||||
Bose |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1458 Регистрация: 5.3.2005 Где: Riga, Latvia Репутация: 23 Всего: 51 |
поставил официальный, но дело не в этом. В общем, я сам и стормозил, когда пытался собрать Debug конфигурацию без $(BDS)\Lib\Debug\ Проблема решилась после создания двух версий FastMM.dcu - одна для debug-сборки, другая для release. (подробнее о различиях в этом топике) |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: Общие вопросы" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |