Перейти к содержанию
Fire Monkey от А до Я

Pulsarius

Пользователи
  • Постов

    32
  • Зарегистрирован

  • Посещение

  • Победитель дней

    3

Сообщения, опубликованные Pulsarius

  1. Привет всем!

    Кто-нибудь сталкивался с проблемой запуска приложения с использованием 3D компонентов на Android эмуляторе? Приложение написано на Delphi. На iOS эмуляторе всё в порядке - запускается и работает без проблем, а вот Android эмуляторе не хочет. Точнее приложение только начинает запускаться и эмулятор падает. Подчёркиваю - не приложение а сам эмулятор падает! Если убрать 3D компоненты, то всё будет нормально работать, но стоит только добавить хотя бы один 3D компонент, то всё... Delphi 10 Seattle, Android API 22 для 5.1.1. Такое же было и на прежних версиях студии - XE7, XE8. Решение не находил и забивал, т.к. под Android приложение не требовалось - чисто для интереса пробовал запустить, а сейчас потребовалось. Буду очень благодарен за помощь!

  2. Ты с ума сошёл в функцию массивы передавать  :)

     

    Замени

    function opus_decode(st:OpusDecoder; data:array of Byte; len:Integer;var pcm: array of Byte; frame_size: Integer; decode_fec:Integer):Integer; cdecl; external 'opus.dll';
    

    на

    function opus_decode(st: OpusDecoder; data: PByte; len: Integer; pcm: PByte; frame_size: Integer; decode_fec: Integer):Integer; cdecl; external 'opus.dll';
    

    Прототип функции ты неверно объявил. Дальше вызываешь функцию так:

    Error := opus_decode(OPDecoder, @PreEnc[0], 9, @PreDec[0], 2000, 0);
    
  3. Или можно ещё короче, если планируется работа с памятью по указателю:

    var
      decodedPtr: Pointer;
    
    procedure MyProcedure(const MaxDataBytes: Integer);
    begin
      GetMem(decodedPtr, MaxDataBytes);
    end;
    

    И потом не забыть написать где-нибудь вот это, когда выделенная память больше не нужна:

    ...
    FreeMem(decodedPtr);
    ...
    
×
×
  • Создать...