Подозреваемая проблема RTTI, вызывающая код Delphi из кода C ++ Builder - PullRequest
0 голосов
/ 21 января 2019

Скомпилированная в Delphi библиотека Graphics32 ведет себя странно, когда вызывается из кода C ++ Builder XE8, подозревает проблему с информацией RTTI.

Я создал библиотеку Delphi Graphics32 с C ++ Builder XE8 IDE из-за обновления IDE из BDS Studio.Немного поработав с определениями, пакет компилируется и устанавливается (Design + Runtime).Стоит упомянуть, что я обновился до последней версии исходного кода Graphics32 из-за несовместимости со старым кодом и новой IDE.

Поэтому я скомпилировал мой (ранее работавший код в BDS Studio) код C ++, который использует класс TBitmap32 Delphi, во время выполнения я получаю ошибку нарушения доступа, когда вызывается конструктор TBitmap32 с параметрами TCustomBackendClass.Мой код вызвал конструктор без параметров, который вызывает функцию Graphics32, чтобы получить правильную реализацию TCustomBackendClass для обработки растровых изображений в памяти.Этот класс представляет класс Delphi, но, похоже, он обрабатывает счетчик программ в нераспределенной памяти, когда он используется реализацией TBitmap32 для выделения серверной части.Я пытался экспортировать таблицу RTTI в компилятор Delphi, но, очевидно, я что-то не так.

Что я могу сделать?Эта вещь сводит меня с ума.Спасибо!

Мой код:

class TTagBitmap: public TBitmap32 {
public:
    TTagBitmap( TColor32 col, TColor32 col2 );
};

TTagBitmap::TTagBitmap( TColor32 col, TColor32 col2 ) {
    double size = 32;
    double bord = 2 ;
(...)

Здесь происходит сбой (сгенерированный файл hpp):

/* TCustomBitmap32.Create */ inline __fastcall virtual TBitmap32(TCustomBackendClass Backend)/* overload */ : TCustomBitmap32(Backend) { }

Бэкэнд оценен, но я не могу отладить его.

Я ожидаю, что будет создан экземпляр TBitmap32, но вместо этого я получаю ошибку недопустимого доступа.

...