Embarcadero RAD Delphi 10.3.3,无法使用Box2D库为64位Android编译我的应用程序



无法使用Delphi 10.3.3为Android 64位编译我的应用程序。我的应用程序正在使用Box2D库。编译时,我得到以下错误:

[DCC Error] E2597 C:UsersPublicDocumentsEmbarcaderoStudioandroid-ndk-r17btoolchainsaarch64-linux-android-4.9prebuiltwindowsaarch64-linux-androidbinld.exe: cannot find -lFlatBox2D
C:UsersPublicDocumentsEmbarcaderoStudioandroid-ndk-r17btoolchainsaarch64-linux-android-4.9prebuiltwindowsaarch64-linux-androidbinld.exe: cannot find -lgnustl_static

同一应用程序的Android 32位编译成功。编译另一个适用于Android 64位的我的(简单(应用程序运行良好。

所以,我意识到,这个问题只存在于我的应用程序中使用的适用于Android 64位的Box2D。

然后我还测试了RAD附带的Box2D TestBed应用程序的编译(这里是...EmbarcaderoStudio20.0SamplesObject PascalMulti-Device SamplesPhysicsTestBed(-同样的问题-它成功地为Android 32位编译,但当我为Android 64位编译TestBed时出现了同样的错误!

请帮忙。我的应用程序中已经有数千行代码,现在它已经完全停止了-无法为Android 64位构建它[害怕]

更新1

通过将路径C:UsersPublicDocumentsEmbarcaderoStudioandroid-ndk-r17bsourcescxx-stlgnu-libstdc++4.9libsarm64-v8a添加到菜单"工具"->"选项",然后"SDK管理器"->"NDK"->"Delphi NDK库路径"的"Android SDK 25.2.5 64位"->值,修复了第二个错误"找不到-lgnustl_static"。

但是,第一个问题">找不到-lFlatBox2D"仍然存在。我在电脑上只找到了libFlatBox2D.a库的两个文件,它是

C:Program Files (x86)EmbarcaderoStudio20.0libandroiddebug
C:Program Files (x86)EmbarcaderoStudio20.0libandroidrelease

我在Android 64位的SDK Manager中将这两个路径添加到相同的"Delphi NDK库路径"中。但是,现在正在为这些路径中的每一个获取错误消息skipping incompatible libFlatBox2D.a when searching for -lFlatBox2D

那么现在的问题是,在哪里可以找到Android 64位所需的兼容libFlatBox2D.a?

更新2:

嗯。。。并且在以下两个CCD_ 5路径中没有任何libFlatBox2D.a文件。

C:Program Files (x86)EmbarcaderoStudio20.0libandroid64debug
C:Program Files (x86)EmbarcaderoStudio20.0libandroid64release

这是否意味着,10.3.3 Delphi安装缺少64位Box2D安卓库?

更新3:

正如@Stefanos的回答,现在我有了64位版本的libFlatBox2D.a。但现在,在编译时,我收到了关于Box2D名称的1700个链接器错误,所有这些错误都类似于以下内容:

[DCC Error] E2597 C:UsersPublicDocumentsEmbarcaderoStudio20.0SamplesObject PascalMulti-Device SamplesPhysicsTestBedAndroid64DebugBox2D.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:UsersPublicDocumentsEmbarcaderoStudio20.0SamplesObject PascalMulti-Device SamplesPhysicsTestBedAndroid64DebugBox2D.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:UsersPublicDocumentsEmbarcaderoStudio20.0SamplesObject PascalMulti-Device SamplesPhysicsTestBedAndroid64DebugBox2D.Common.o: In function `Box2d::Common::b2Version_Create()':
Box2D.Common:(.text._ZN5Box2d6Common16b2Version_CreateEv[_ZN5Box2d6Common16b2Version_CreateEv]+0x0): undefined reference to `b2Version_b2Version'
C:UsersPublicDocumentsEmbarcaderoStudio20.0SamplesObject PascalMulti-Device SamplesPhysicsTestBedAndroid64DebugBox2D.Common.o: In function `Box2d::Common::b2BlockAllocator_Create()':
Box2D.Common:(.text._ZN5Box2d6Common23b2BlockAllocator_CreateEv[_ZN5Box2d6Common23b2BlockAllocator_CreateEv]+0x0): undefined reference to `b2BlockAllocator_b2BlockAllocator_1'
C:UsersPublicDocumentsEmbarcaderoStudio20.0SamplesObject PascalMulti-Device SamplesPhysicsTestBedAndroid64DebugBox2D.Common.o: In function `Box2d::Common::b2BlockAllocator_Destroy(NativeUInt)':
Box2D.Common:(.text._ZN5Box2d6Common24b2BlockAllocator_DestroyE10NativeUInt[_ZN5Box2d6Common24b2BlockAllocator_DestroyE10NativeUInt]+0x0): undefined reference to `b2BlockAllocator_dtor'
etc...etc...

更新4:当前状态

我现在正在寻找libFlatBox2D.一个Android 64位(Delphi 10.3.3(的库文件。如果有人有,请与我分享。

上述尝试均未成功。需要一个"原始"64位libFlatBox2D.a,这不在我安装的RAD 10.3.3…中

更新5:

Embarcadero QA创建了一个票证:https://quality.embarcadero.com/browse/RSP-27762将等待他们的解决方案。

您必须创建一个名为FlatBox2D的新包,添加来自的所有FlatBox单元。。\studio\20.0\source\FlatBox2D并为Android64编译它。

我已经创建了这个包,并用Delphi 10.3.3编译了Android64的调试和发布版本。在下面的链接中,您将找到新的软件包文件和Android64文件夹,您可以在其中找到用于调试和发布的libFlatBox2D.a。只需将.a文件复制到..中的相应文件夹即可。。\studio\20.0\lib\Android64.

您总是可以通过将FlatBox2D.dpr和FlatBox2D.dproj文件复制到中来自行编译包。。\studio\20.0\source\FlatBox2D,在Delphi中加载dpr并将其编译为Android64…

Stefanos

FlatBox2D.zip

最新更新