#function #delphi #components #c builder #graphics32
#функция #дельфи #Компоненты #c builder #graphics32 #delphi
Вопрос:
Я пытаюсь использовать пакет Graphics32. Graphics32 был скомпилирован и установлен без каких-либо проблем. Когда я пытаюсь выполнить (отладить) следующий код в C Builder XE3
TBitmap32* bmp = new TBitmap32();
bmp->LoadFromFile("d:\sample.bmp");//This calls SaveToStream instead of LoadFromFile
...
он вызывает другую функцию-член SaveToStream, которую я могу отслеживать и выполнять во время отладки, пока не появится AV.
Я никогда раньше не сталкивался с таким поведением. Есть ли какая-либо директива компилятора, которую я пропускаю, или какое-то обходное решение для правильного вызова функции?
Обновление: я использую источник Graphics32 из SVN. Все работает хорошо, если я использую код до версии 2122.
Комментарии:
1. Звучит как несоответствие между тем, как компилятор Delphi генерирует записи VTABLE и как компилятор C Builder обращается к ним. Действительно, странно, что они обычно довольно хорошо синхронизируются с этим. С другой стороны, веб -сайт Graphics32 показывает, что последний выпуск Graphics32 был 2 года назад и официально не поддерживает XE3 и более поздние версии, поэтому может возникнуть проблема с файлами пакетов, которые вы скомпилировали в XE3.
2. Я использую исходный код из svn. Все работает хорошо, если я использую код до версии 2122 ссылка
3. Ну, когда вы делаете разницу между более ранней версией и последней, есть ли что-нибудь другое в файлах проекта или объявлениях классов?
4. @RemyLebeau, как мы видим на странице различий , есть некоторые незначительные изменения в единицах измерения. Единственное, что я подозреваю, это объявление новой «функции класса».
5. Вероятно, вам придется обсудить эту проблему с авторами Graphics32.