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

Embarcadero RAD Delphi 10.3.3,无法使用64位Android的Box2D库编译我的应用程序,android,delphi,compilation,64-bit,box2d,Android,Delphi,Compilation,64 Bit,Box2d,无法使用Delphi 10.3.3为Android 64位编译我的应用程序。 我的应用程序正在使用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

无法使用Delphi 10.3.3为Android 64位编译我的应用程序。 我的应用程序正在使用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位编译另一个my(simple)应用程序效果良好

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

然后,我还测试了RAD附带的Box2D测试床应用程序的编译(这里
…\Embarcadero\Studio\20.0\Samples\Object Pascal\Multi-Device Samples\Physics\TestBed\
)-同样的问题-它针对Android 32位成功编译,但在针对Android 64位编译测试床时出现同样的错误

请帮忙。我的应用程序中已经有数千行代码,现在已经是句号了——无法为Android 64位[构建它

更新1

第二个错误“找不到-lgnustl_static”通过将路径
C:\Users\Public\Documents\Embarcadero\Studio\android-ndk-r17b\sources\cxx stl\gnu libstdc++\4.9\libs\arm64-v8a
添加到菜单工具->选项中,然后将“SDK管理器”->ndk->“安卓SDK 25.2.5 64位”->“Delphi ndk库路径”的值修复

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

C:\Program Files (x86)\Embarcadero\Studio\20.0\lib\android\debug
C:\Program Files (x86)\Embarcadero\Studio\20.0\lib\android\release
我在Android 64位SDK管理器中将两个路径添加到相同的“Delphi NDK库路径”。 但是,现在在搜索这些路径中的每个路径的-lFlatBox2D时,会收到错误消息
跳过不兼容的libFlatBox2D.a

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

更新2:

嗯。。。在下面的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.3Delphi安装缺少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...
[DCC Error]E2597 C:\Users\Public\Documents\Embarcadero\Studio\20.0\Samples\Object Pascal\Multi-Device Samples\Physics\TestBed\Android64\Debug\Box2D.Common.o:在函数“Box2D::Common::Create\u b2Draw\u delegate(System::DelphiInterface)”中:
Box2D.Common:(.text.5box2D6Common22Create_b2Draw_delegaten6System15DelphicInterfaceIns0_7Ib2DrawEEE[_ZN5Box2d6Common22Create_b2Draween6; delphicInterfaceIns0_7Ib2DrawEEE]+0x0):对“Create_b2Draween_delegaten”的未定义引用
C:\Users\Public\Documents\Embarcadero\Studio\20.0\Samples\Object Pascal\Multi-Device Samples\Physics\TestBed\Android64\Debug\Box2D.Common.o:在函数“Box2D::Common::Destroy\u b2Draw\u delegate(NativeUInt)”中:
框2d.Common:(.text.ZN5Box2d6Common23Destroy\b2Draw\u delegate10nativeuint[ZN5Box2d6Common23Destroy\u b2Draw\u delegate10nativeuint]+0x0):未定义对“Destroy\u b2Draw\u delegated”的引用
C:\Users\Public\Documents\Embarcadero\Studio\20.0\Samples\Object Pascal\Multi-Device Samples\Physics\TestBed\Android64\Debug\Box2D.Common.o:在函数“Box2D::Common::b2Version\u Create()”中:
Box2D.Common:(.text.ZN5Box2d6Common16b2Version_CreateEv[ZN5Box2d6Common16b2Version_CreateEv]+0x0):对“b2Version_b2Version”的未定义引用
C:\Users\Public\Documents\Embarcadero\Studio\20.0\Samples\Object Pascal\Multi-Device Samples\Physics\TestBed\Android64\Debug\Box2D.Common.o:在函数'Box2D::Common::b2BlockAllocator_Create()'中:
Box2D.Common:(.text.ZN5Box2d6Common23b2BlockAllocator_CreateEv[_ZN5Box2d6Common23b2BlockAllocator_CreateEv]+0x0):对“b2BlockAllocator_b2BlockAllocator_1”的未定义引用
C:\Users\Public\Documents\Embarcadero\Studio\20.0\Samples\Object Pascal\Multi-Device Samples\Physics\TestBed\Android64\Debug\Box2D.Common.o:在函数“Box2D::Common::b2BlockAllocator_Destroy(NativeUInt)”中:
Box2D.Common:(.text.5box2D6Common24B2BlockAllocator_DestroyE10NativeUInt[_ZN5Box2d6Common24b2BlockAllocator_DestroyE10NativeUInt]+0x0):对“b2BlockAllocator_dtor”的未定义引用
等等…等等。。。
更新4:当前状态

我现在正在寻找原始的libFlatBox2D.aAndroid 64位的库文件(Delphi 10.3.3)。如果有人有,请与我分享

上述尝试均未成功。需要一个“原始”64位libFlatBox2D.a,我安装的RAD 10.3.3中没有这个

更新5:

Embarcadero QA创建了一个记录单:
将等待他们的解决方案。

搜索路径设置是否正确?您可能忘记了为64位目标包含/添加/设置它,尝试为所有目标设置它(请参见项目选项,然后是目标,将目标更改为64位并在那里设置选项或选择目标所有配置),另一种可能是将这些文件添加到项目中

我只是碰巧发现了您的问题,而我正在寻找最新版本的box2d for Delphi?!:)


您使用的是Delphi中的“内置”box2d还是更新/更新版本?如果是,从何处开始?哈哈,回答中有问题哈哈。

搜索路径设置正确吗?您可能忘记了为64位目标包含/添加/设置它,尝试为所有目标设置它(请参见项目选项,然后是目标,将目标更改为64位并在那里设置选项或选择目标所有配置),另一种可能是将这些文件添加到项目中

我只是碰巧发现了您的问题,而我正在寻找最新版本的box2d for Delphi?!:)


您使用的是Delphi中的“内置”box2d还是更新/更新版本?如果是,从何处开始?lol,回答中的问题lol。

您必须创建一个名为FlatBox2D的新包,添加..\studio\20.0中的所有FlatBox单元\