Невозможно скомпилировать мое приложение для Android 64-бит с Delphi 10.3.3. Мое приложение использует библиотеку Box2D. Во время компиляции я получаю следующие ошибки:
[DCC Error] E2597 C:\Users\Public\Documents\Embarcadero\Studio\android-ndk-r17b\toolchains\aarch64-linux-android-4.9\prebuilt\windows\aarch64-linux-android\bin\ld.exe: cannot find -lFlatBox2D
C:\Users\Public\Documents\Embarcadero\Studio\android-ndk-r17b\toolchains\aarch64-linux-android-4.9\prebuilt\windows\aarch64-linux-android\bin\ld.exe: cannot find -lgnustl_static
Компиляция для Android 32-битного того же приложения прошла успешно. Компиляция другого моего (простого) приложения для Android 64-бит работает нормально.
Итак, я понял, что проблема только в Box2D для Android 64-бит, используемых в моем приложении.
Затем я также протестировал компиляцию приложения Box2D TestBed, которое идет с RAD (здесь ...\Embarcadero\Studio\20.0\Samples\Object Pascal\Multi-Device Samples\Physics\TestBed\
) - та же проблема - оно успешно скомпилировано для Android 32-бит, но та же ошибка, когда я компилирую TestBed для Android 64-бит!
Пожалуйста, помогите. Тысячи строк кода в моем приложении уже, и теперь это полная остановка - не может собрать его для Android 64-бит [ напуган ]
ОБНОВЛЕНИЕ1
Вторая ошибка "невозможно найти -lgnustl_stati c" исправлена путем добавления пути C:\Users\Public\Documents\Embarcadero\Studio\android-ndk-r17b\sources\cxx-stl\gnu-libstdc++\4.9\libs\arm64-v8a
в меню Инструменты-> Параметры, затем 'Менеджер SDK' -> NDK -> 'Android SDK 25.2.5 64-битное значение '-> для' Delphi Путь к библиотеке NDK '.
Однако первая проблема' не может найти -lFlatBox2D 'по-прежнему существует. Я нашел только 2 файла библиотеки libFlatBox2D.a
на моем компьютере, это
C:\Program Files (x86)\Embarcadero\Studio\20.0\lib\android\debug
C:\Program Files (x86)\Embarcadero\Studio\20.0\lib\android\release
Оба пути я добавил в один и тот же 'Delphi NDK Library path' в SDK Manager для Android 64bit. Тем не менее, теперь получаю сообщение об ошибке skipping incompatible libFlatBox2D.a when searching for -lFlatBox2D
для каждого из этих путей.
Итак, вопрос сейчас - где найти совместимый libFlatBox2D.a, который требуется для Android 64bit?
UPDATE2:
Хм ... и в следующих 2 android64
путях нет файлов libFlatBox2D.a.
C:\Program Files (x86)\Embarcadero\Studio\20.0\lib\android64\debug
C:\Program Files (x86)\Embarcadero\Studio\20.0\lib\android64\release
Означает ли это, что 10.3.3 Delphi отсутствует установка 64-битной библиотеки Box2D android?
ОБНОВЛЕНИЕ3:
Как ответил @Stefanos, теперь у меня есть 64-битная версия libFlatBox2D.a , Но теперь во время компиляции я получил подсчет 1700 ошибок компоновщика имен Box2D, все они похожи на приведенные ниже:
[DCC Error] E2597 C:\Users\Public\Documents\Embarcadero\Studio\20.0\Samples\Object Pascal\Multi-Device Samples\Physics\TestBed\Android64\Debug\Box2D.Common.o: In function `Box2d::Common::Create_b2Draw_delegate(System::DelphiInterface<Box2d::Common::Ib2Draw>)':
Box2D.Common:(.text._ZN5Box2d6Common22Create_b2Draw_delegateEN6System15DelphiInterfaceINS0_7Ib2DrawEEE[_ZN5Box2d6Common22Create_b2Draw_delegateEN6System15DelphiInterfaceINS0_7Ib2DrawEEE]+0x0): undefined reference to `Create_b2Draw_delegate'
C:\Users\Public\Documents\Embarcadero\Studio\20.0\Samples\Object Pascal\Multi-Device Samples\Physics\TestBed\Android64\Debug\Box2D.Common.o: In function `Box2d::Common::Destroy_b2Draw_delegate(NativeUInt)':
Box2D.Common:(.text._ZN5Box2d6Common23Destroy_b2Draw_delegateE10NativeUInt[_ZN5Box2d6Common23Destroy_b2Draw_delegateE10NativeUInt]+0x0): undefined reference to `Destroy_b2Draw_delegate'
C:\Users\Public\Documents\Embarcadero\Studio\20.0\Samples\Object Pascal\Multi-Device Samples\Physics\TestBed\Android64\Debug\Box2D.Common.o: In function `Box2d::Common::b2Version_Create()':
Box2D.Common:(.text._ZN5Box2d6Common16b2Version_CreateEv[_ZN5Box2d6Common16b2Version_CreateEv]+0x0): undefined reference to `b2Version_b2Version'
C:\Users\Public\Documents\Embarcadero\Studio\20.0\Samples\Object Pascal\Multi-Device Samples\Physics\TestBed\Android64\Debug\Box2D.Common.o: In function `Box2d::Common::b2BlockAllocator_Create()':
Box2D.Common:(.text._ZN5Box2d6Common23b2BlockAllocator_CreateEv[_ZN5Box2d6Common23b2BlockAllocator_CreateEv]+0x0): undefined reference to `b2BlockAllocator_b2BlockAllocator_1'
C:\Users\Public\Documents\Embarcadero\Studio\20.0\Samples\Object Pascal\Multi-Device Samples\Physics\TestBed\Android64\Debug\Box2D.Common.o: In function `Box2d::Common::b2BlockAllocator_Destroy(NativeUInt)':
Box2D.Common:(.text._ZN5Box2d6Common24b2BlockAllocator_DestroyE10NativeUInt[_ZN5Box2d6Common24b2BlockAllocator_DestroyE10NativeUInt]+0x0): undefined reference to `b2BlockAllocator_dtor'
etc...etc...
UPDATE4: текущий статус
I'm ищем оригинальный libFlatBox2D.a файл библиотеки для Android 64-бит (Delphi 10.3.3). Если у кого-то есть, пожалуйста, поделитесь им со мной.
Вышеуказанные попытки не увенчались успехом. Требуется «оригинальный» 64-битный libFlatBox2D.a, которого нет в моей установке RAD 10.3.3 ...
UPDATE5:
Embarcadero QA создал заявку : https://quality.embarcadero.com/browse/RSP-27762 Будем ждать от их решения.