Использование компонента Delphi в C Builder вызывает неправильную функцию

#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.