Tha*_*arc 1 delphi android delphi-xe5
今天,我将XE5安装移植到了VMWare Windows 7 x86 OS上。我没有安装android SDK,而是通过网络驱动器映射从主机OS上现有的SDK中创建了一个。
VMWare OS上的网络驱动器S基本上是到主机OS的物理硬盘驱动器C的克隆(链接),因此路径应该可以。SDK已成功创建,但是在尝试编译时出现了一些(可能很多)链接器错误。
我也从S驱动器打开现有项目,几乎与以前在主机OS上进行的操作相同。我可以从VM C磁盘或相同的S磁盘位置运行示例项目,例如FlashLight,而没有链接器错误,因此我猜这是我项目中的东西。
谁能说出Rad XE5为什么有未定义的参考错误(E2597),我该如何绕过它呢?
错误日志如下:
[DCC Error] E2597 S:\Users\Public\Documents\RAD Studio\12.0\PlatformSDKs\android-ndk-r8e\toolchains\arm-linux-androideabi-4.6\prebuilt\windows\bin\arm-linux-androideabi-ld.exe: S:\Delphi\Android\BitStack\V0.2\Android\Debug\CameraComp.o: in function Cameracomp::TCameraComponentForm::btnStartCameraClick(System::DelphiObject<System::TObject>):C:\Delphi\Android\BitStack\V0.2/CameraComp.pas:139: error: undefined reference to 'System::_InstAddRef(System::DelphiObject<System::TObject>)'
S:\Users\Public\Documents\RAD Studio\12.0\PlatformSDKs\android-ndk-r8e\toolchains\arm-linux-androideabi-4.6\prebuilt\windows\bin\arm-linux-androideabi-ld.exe: S:\Delphi\Android\BitStack\V0.2\Android\Debug\CameraComp.o: in function Cameracomp::TCameraComponentForm::btnStartCameraClick(System::DelphiObject<System::TObject>):C:\Delphi\Android\BitStack\V0.2/CameraComp.pas:142: error: undefined reference to 'System::_InstClear(System::DelphiObject<System::TObject>&)'
S:\Users\Public\Documents\RAD Studio\12.0\PlatformSDKs\android-ndk-r8e\toolchains\arm-linux-androideabi-4.6\prebuilt\windows\bin\arm-linux-androideabi-ld.exe: S:\Delphi\Android\BitStack\V0.2\Android\Debug\CameraComp.o: in function Cameracomp::TCameraComponentForm::btnStartCameraClick(System::DelphiObject<System::TObject>):C:\Delphi\Android\BitStack\V0.2/CameraComp.pas:142: error: undefined reference to 'System::_InstClear(System::DelphiObject<System::TObject>&)'
S:\Users\Public\Documents\RAD Studio\12.0\PlatformSDKs\android-ndk-r8e\toolchains\arm-linux-androideabi-4.6\prebuilt\windows\bin\arm-linux-androideabi-ld.exe: S:\Delphi\Android\BitStack\V0.2\Android\Debug\CameraComp.o: in function Cameracomp::TCameraComponentForm::btnStopCameraClick(System::DelphiObject<System::TObject>):C:\Delphi\Android\BitStack\V0.2/CameraComp.pas:145: error: undefined reference to 'System::_InstAddRef(System::DelphiObject<System::TObject>)'
S:\Users\Public\Documents\RAD Studio\12.0\PlatformSDKs\android-ndk-r8e\toolchains\arm-linux-androideabi-4.6\prebuilt\windows\bin\arm-linux-androideabi-ld.exe: S:\Delphi\Android\BitStack\V0.2\Android\Debug\CameraComp.o: in function Cameracomp::TCameraComponentForm::btnStopCameraClick(System::DelphiObject<System::TObject>):C:\Delphi\Android\BitStack\V0.2/CameraComp.pas:148: error: undefined reference to 'System::_InstClear(System::DelphiObject<System::TObject>&)'
S:\Users\Public\Documents\RAD Studio\12.0\PlatformSDKs\android-ndk-r8e\toolchains\arm-linux-androideabi-4.6\prebuilt\windows\bin\arm-linux-androideabi-ld.exe: S:\Delphi\Android\BitStack\V0.2\Android\Debug\CameraComp.o: in function Cameracomp::TCameraComponentForm::btnStopCameraClick(System::DelphiObject<System::TObject>):C:\Delphi\Android\BitStack\V0.2/CameraComp.pas:148: error: undefined reference to 'System::_InstClear(System::DelphiObject<System::TObject>&)'
S:\Users\Public\Documents\RAD Studio\12.0\PlatformSDKs\android-ndk-r8e\toolchains\arm-linux-androideabi-4.6\prebuilt\windows\bin\arm-linux-androideabi-ld.exe: S:\Delphi\Android\BitStack\V0.2\Android\Debug\CameraComp.o: in function Cameracomp::TCameraComponentForm::FormCreate(System::DelphiObject<System::TObject>):C:\Delphi\Android\BitStack\V0.2/CameraComp.pas:67: error: undefined reference to 'System::_InstAddRef(System::DelphiObject<System::TObject>)'
S:\Users\Public\Documents\RAD Studio\12.0\PlatformSDKs\android-ndk-r8e\toolchains\arm-linux-androideabi-4.6\prebuilt\windows\bin\arm-linux-androideabi-ld.exe: S:\Delphi\Android\BitStack\V0.2\Android\Debug\CameraComp.o: in function Cameracomp::TCameraComponentForm::Timer1Timer(System::DelphiObject<System::TObject>):C:\Delphi\Android\BitStack\V0.2/CameraComp.pas:82: error: undefined reference to 'System::_InstAddRef(System::DelphiObject<System::TObject>)'
S:\Users\Public\Documents\RAD Studio\12.0\PlatformSDKs\android-ndk-r8e\toolchains\arm-linux-androideabi-4.6\prebuilt\windows\bin\arm-linux-androideabi-ld.exe: S:\Delphi\Android\BitStack\V0.2\Android\Debug\CameraComp.o: in function System::Generics::Collections::TEnumerable__1<System::DelphiObject<Fmx::Types::TFmxObject> >::ToArray():C:\Delphi\Android\BitStack\V0.2/CameraComp.pas:2280: error: undefined reference to 'System::_InstCopy(System::DelphiObject<System::TObject>&, System::DelphiObject<System::TObject>)'
S:\Users\Public\Documents\RAD Studio\12.0\PlatformSDKs\android-ndk-r8e\toolchains\arm-linux-androideabi-4.6\prebuilt\windows\bin\arm-linux-androideabi-ld.exe: S:\Delphi\Android\BitStack\V0.2\Android\Debug\CameraComp.o: in function System::Generics::Collections::TList__1<System::DelphiObject<Fmx::Types::TFmxObject> >::TEnumerator<>::TEnumerator(System::DelphiObject<System::Generics::Collections::TList__1<System::DelphiObject<Fmx::Types::TFmxObject> > >):C:\Delphi\Android\BitStack\V0.2/CameraComp.pas:1185: error: undefined reference to 'System::_InstCopy(System::DelphiObject<System::TObject>&, System::DelphiObject<System::TObject>)'
S:\Users\Public\Documents\RAD Studio\12.0\PlatformSDKs\android-ndk-r8e\toolchains\arm-linux-androideabi-4.6\prebuilt\windows\bin\arm-linux-androideabi-ld.exe: S:\Delphi\Android\BitStack\V0.2\Android\Debug\CameraComp.o: in function System::Generics::Collections::TList__1<System::DelphiObject<Fmx::Types::TFmxObject> >::TEnumerator<>::TEnumerator(System::DelphiObject<System::Generics::Collections::TList__1<System::DelphiObject<Fmx::Types::TFmxObject> > >):C:\Delphi\Android\BitStack\V0.2/CameraComp.pas:1186: error: undefined reference to 'System::_InstCopy(System::DelphiObject<System::TObject>&, System::DelphiObject<System::TObject>)'
S:\Users\Public\Documents\RAD Studio\12.0\PlatformSDKs\android-ndk-r8e\toolchains\arm-linux-androideabi-4.6\prebuilt\windows\bin\arm-linux-androideabi-ld.exe: S:\Delphi\Android\BitStack\V0.2\Android\Debug\CameraComp.o: in function System::Generics::Collections::TList__1<System::DelphiObject<Fmx::Types::TFmxObject> >::TEnumerator<>::TEnumerator(System::DelphiObject<System::Generics::Collections::TList__1<System::DelphiObject<Fmx::Types::TFmxObject> > >):C:\Delphi\Android\BitStack\V0.2/CameraComp.pas:1188: error: undefined reference to 'System::_AfterConstruction(System::DelphiObject<System::TObject>)'
S:\Users\Public\Documents\RAD Studio\12.0\PlatformSDKs\android-ndk-r8e\toolchains\arm-linux-androideabi-4.6\prebuilt\windows\bin\arm-linux-androideabi-ld.exe: S:\Delphi\Android\BitStack\V0.2\Android\Debug\CameraComp.o: in function System::Generics::Collections::TList__1<System::DelphiObject<Fmx::Types::TFmxObject> >::TEnumerator<>::TEnumerator(System::DelphiObject<System::Generics::Collections::TList__1<System::DelphiObject<Fmx::Types::TFmxObject> > >):C:\Delphi\Android\BitStack\V0.2/CameraComp.pas:1188: error: undefined reference to 'System::_ClassDestroy(System::DelphiObject<System::TObject>)'
S:\Users\Public\Documents\RAD Studio\12.0\PlatformSDKs\android-ndk-r8e\toolchains\arm-linux-androideabi-4.6\prebuilt\windows\bin\arm-linux-androideabi-ld.exe: S:\Delphi\Android\BitStack\V0.2\Android\Debug\CameraComp.o: in function System::Generics::Collections::TList__1<System::DelphiObject<Fmx::Types::TFmxObject> >::~TList__1():C:\Delphi\Android\BitStack\V0.2/CameraComp.pas:813: error: undefined reference to 'System::_BeforeDestruction(System::DelphiObject<System::TObject>, signed char)'
S:\Users\Public\Documents\RAD Studio\12.0\PlatformSDKs\android-ndk-r8e\toolchains\arm-linux-androideabi-4.6\prebuilt\windows\bin\arm-linux-androideabi-ld.exe: S:\Delphi\Android\BitStack\V0.2\Android\Debug\CameraComp.o: in function System::Generics::Collections::TList__1<System::DelphiObject<Fmx::Types::TFmxObject> >::~TList__1():C:\Delphi\Android\BitStack\V0.2/CameraComp.pas:817: error: undefined reference to 'System::_ClassDestroy(System::DelphiObject<System::TObject>)'
S:\Users\Public\Documents\RAD Studio\12.0\PlatformSDKs\android-ndk-r8e\toolchains\arm-linux-androideabi-4.6\prebuilt\windows\bin\arm-linux-androideabi-ld.exe: S:\Delphi\Android\BitStack\V0.2\Android\Debug\CameraComp.o: in function System::Generics::Collections::TList__1<System::DelphiObject<Fmx::Types::TFmxObject> >::ToArray():C:\Delphi\Android\BitStack\V0.2/CameraComp.pas:1168: error: undefined reference to 'System::_InstCopy(System::DelphiObject<System::TObject>&, System::DelphiObject<System::TObject>)'
S:\Users\Public\Documents\RAD Studio\12.0\PlatformSDKs\android-ndk-r8e\toolchains\arm-linux-androideabi-4.6\prebuilt\windows\bin\arm-linux-androideabi-ld.exe: S:\Delphi\Android\BitStack\V0.2\Android\Debug\CameraComp.o: in function System::Generics::Collections::TList__1<System::DelphiObject<Fmx::Types::TFmxObject> >::Error(System::UnicodeString, NativeInt):C:\Delphi\Android\BitStack\V0.2/CameraComp.pas:821: error: undefined reference to 'System::_RaiseAtExcept(System::DelphiObject<System::TObject>, void*)'
S:\Users\Public\Documents\RAD Studio\12.0\PlatformSDKs\android-ndk-r8e\toolchains\arm-linux-androideabi-4.6\prebuilt\windows\bin\arm-linux-androideabi-ld.exe: S:\Delphi\Android\BitStack\V0.2\Android\Debug\CameraComp.o: in function System::Generics::Collections::TList__1<System::DelphiObject<Fmx::Types::TFmxObject> >::TList__1():C:\Delphi\Android\BitStack\V0.2/CameraComp.pas:783: error: undefined reference to 'System::_AfterConstruction(System::DelphiObject<System::TObject>)'
S:\Users\Public\Documents\RAD Studio\12.0\PlatformSDKs\android-ndk-r8e\toolchains\arm-linux-androideabi-4.6\prebuilt\windows\bin\arm-linux-androideabi-ld.exe: S:\Delphi\Android\BitStack\V0.2\Android\Debug\CameraComp.o: in function System::Generics::Collections::TList__1<System::DelphiObject<Fmx::Types::TFmxObject> >::TList__1():C:\Delphi\Android\BitStack\V0.2/CameraComp.pas:783: error: undefined reference to 'System::_ClassDestroy(System::DelphiObject<System::TObject>)'
S:\Users\Public\Documents\RAD Studio\12.0\PlatformSDKs\android-ndk-r8e\toolchains\arm-linux-androideabi-4.6\prebuilt\windows\bin\arm-linux-androideabi-ld.exe: S:\Delphi\Android\BitStack\V0.2\Android\Debug\CameraComp.o: in function System::Generics::Collections::TList__1<System::DelphiObject<Fmx::Types::TFmxObject> >::TList__1(System::DelphiInterface<System::Generics::Defaults::IComparer__1<System::DelphiObject<Fmx::Types::TFmxObject> > >):C:\Delphi\Android\BitStack\V0.2/CameraComp.pas:797: error: undefined reference to 'System::_AfterConstruction(System::DelphiObject<System::TObject>)'
S:\Users\Public\Documents\RAD Studio\12.0\PlatformSDKs\android-ndk-r8e\toolchains\arm-linux-androideabi-4.6\prebuilt\windows\bin\arm-linux-androideabi-ld.exe: S:\Delphi\Android\BitStack\V0.2\Android\Debug\CameraComp.o: in function System::Generics::Collections::TList__1<System::DelphiObject<Fmx::Types::TFmxObject> >::TList__1(System::DelphiInterface<System::Generics::Defaults::IComparer__1<System::DelphiObject<Fmx::Types::TFmxObject> > >):C:\Delphi\Android\BitStack\V0.2/CameraComp.pas:797: error: undefined reference to 'System::_ClassDestroy(System::DelphiObject<System::TObject>)'
S:\Users\Public\Documents\RAD Studio\12.0\PlatformSDKs\android-ndk-r8e\toolchains\arm-linux-androideabi-4.6\prebuilt\windows\bin\arm-linux-androideabi-ld.exe: S:\Delphi\Android\BitStack\V0.2\Android\Debug\CameraComp.o: in function System::Generics::Collections::TList__1<System::DelphiObject<Fmx::Types::TFmxObject> >::TList__1(System::DelphiObject<System::Generics::Collections::TEnumerable__1<System::DelphiObject<Fmx::Types::TFmxObject> > >):C:\Delphi\Android\BitStack\V0.2/CameraComp.pas:810: error: undefined reference to 'System::_AfterConstruction(System::DelphiObject<System::TObject>)'
S:\Users\Public\Documents\RAD Studio\12.0\PlatformSDKs\android-ndk-r8e\toolchains\arm-linux-androideabi-4.6\prebuilt\windows\bin\arm-linux-androideabi-ld.exe: S:\Delphi\Android\BitStack\V0.2\Android\Debug\CameraComp.o: in function System::Generics::Collections::TList__1<System::DelphiObject<Fmx::Types::TFmxObject> >::Insert(int, System::DelphiObject<Fmx::Types::TFmxObject>):C:\Delphi\Android\BitStack\V0.2/CameraComp.pas:874: error: undefined reference to 'System::_RaiseExcept(System::DelphiObject<System::TObject>)'
S:\Users\Public\Documents\RAD Studio\12.0\PlatformSDKs\android-ndk-r8e\toolchains\arm-linux-androideabi-4.6\prebuilt\windows\bin\arm-linux-androideabi-ld.exe: S:\Delphi\Android\BitStack\V0.2\Android\Debug\CameraComp.o: in function System::Generics::Collections::TList__1<System::DelphiObject<Fmx::Types::TFmxObject> >::InsertRange(int, System::DelphiObject<Fmx::Types::TFmxObject> const*, int):C:\Delphi\Android\BitStack\V0.2/CameraComp.pas:892: error: undefined reference to 'System::_RaiseExcept(System::DelphiObject<System::TObject>)'
S:\Users\Public\Documents\RAD Studio\12.0\PlatformSDKs\android-ndk-r8e\toolchains\arm-linux-androideabi-4.6\prebuilt\windows\bin\arm-linux-androideabi-ld.exe: S:\Delphi\Android\BitStack\V0.2\Android\Debug\CameraComp.o: in function System::Generics::Collections::TList__1<System::DelphiObject<Fmx::Types::TFmxObject> >::DeleteRange(int, int):C:\Delphi\Android\BitStack\V0.2/CameraComp.pas:1032: error: undefined reference to 'System::_RaiseExcept(System::DelphiObject<System::TObject>)'
S:\Users\Public\Documents\RAD Studio\12.0\PlatformSDKs\android-ndk-r8e\toolchains\arm-linux-androideabi-4.6\prebuilt\windows\bin\arm-linux-androideabi-ld.exe: S:\Delphi\Android\BitStack\V0.2\Android\Debug\CameraComp.o: in function System::Generics::Collections::TList__1<System::DelphiObject<Fmx::Types::TFmxObject> >::Move(int, int):C:\Delphi\Android\BitStack\V0.2/CameraComp.pas:1122: error: undefined reference to 'System::_RaiseExcept(System::DelphiObject<System::TObject>)'
S:\Users\Public\Documents\RAD Studio\12.0\PlatformSDKs\android-ndk-r8e\toolchains\arm-linux-androideabi-4.6\prebuilt\windows\bin\arm-linux-androideabi-ld.exe: S:\Delphi\Android\BitStack\V0.2\Android\Debug\CameraComp.o: in function System::Generics::Collections::TDictionary__2<System::UnicodeString, System::Variant>::TKeyCollection<>::TKeyCollection(System::DelphiObject<System::Generics::Collections::TDictionary__2<System::UnicodeString, System::Variant> >):C:\Delphi\Android\BitStack\V0.2/CameraComp.pas:2238: error: undefined reference to 'System::_InstWeakCopy(System::DelphiObject<System::TObject>&, System::DelphiObject<System::TObject>)'
S:\Users\Public\Documents\RAD Studio\12.0\PlatformSDKs\android-ndk-r8e\toolchains\arm-linux-androideabi-4.6\prebuilt\windows\bin\arm-linux-androideabi-ld.exe: S:\Delphi\Android\BitStack\V0.2\Android\Debug\CameraComp.o: in function System::Generics::Collections::TDictionary__2<System::UnicodeString, System::Variant>::TValueCollection<>::TValueCollection(System::DelphiObject<System::Generics::Collections::TDictionary__2<System::UnicodeString, System::Variant> >):C:\Delphi\Android\BitStack\V0.2/CameraComp.pas:2209: error: undefined reference to 'System::_InstWeakCopy(System::DelphiObject<System::TObject>&, System::DelphiObject<System::TObject>)'
S:\Users\Public\Documents\RAD Studio\12.0\PlatformSDKs\android-ndk-r8e\toolchains\arm-linux-androideabi-4.6\prebuilt\windows\bin\arm-linux-androideabi-ld.exe: S:\Delphi\Android\BitStack\V0.2\Android\Debug\CameraComp.o: in function System::Generics::Collections::TList__1<System::DelphiObject<System::TObject> >::~TList__1():C:\Delphi\Android\BitStack\V0.2/CameraComp.pas:813: error: undefined reference to 'System::_BeforeDestruction(System::DelphiObject<System::TObject>, signed char)'
S:\Users\Public\Documents\RAD Studio\12.0\PlatformSDKs\android-ndk-r8e\toolchains\arm-linux-androideabi-4.6\prebuilt\windows\bin\arm-linux-androideabi-ld.exe: S:\Delphi\Android\BitStack\V0.2\Android\Debug\CameraComp.o: in function System::Generics::Collections::TList__1<System::DelphiObject<System::TObject> >::Error(System::UnicodeString, NativeInt):C:\Delphi\Android\BitStack\V0.2/CameraComp.pas:821: error: undefined reference to 'System::_RaiseAtExcept(System::DelphiObject<System::TObject>, void*)'
S:\Users\Public\Documents\RAD Studio\12.0\PlatformSDKs\android-ndk-r8e\toolchains\arm-linux-androideabi-4.6\prebuilt\windows\bin\arm-linux-androideabi-ld.exe: S:\Delphi\Android\BitStack\V0.2\Android\Debug\CameraComp.o: in function System::Generics::Collections::TList__1<System::DelphiObject<System::Classes::TComponent> >::~TList__1():C:\Delphi\Android\BitStack\V0.2/CameraComp.pas:813: error: undefined reference to 'System::_BeforeDestruction(System::DelphiObject<System::TObject>, signed char)'
S:\Users\Public\Documents\RAD Studio\12.0\PlatformSDKs\android-ndk-r8e\toolchains\arm-linux-androideabi-4.6\prebuilt\windows\bin\arm-linux-androideabi-ld.exe: S:\Delphi\Android\BitStack\V0.2\Android\Debug\CameraComp.o: in function System::Generics::Collections::TList__1<System::DelphiObject<System::Classes::TComponent> >::Error(System::UnicodeString, NativeInt):C:\Delphi\Android\BitStack\V0.2/CameraComp.pas:821: error: undefined reference to 'System::_RaiseAtExcept(System::DelphiObject<System::TObject>, void*)'
S:\Users\Public\Documents\RAD Studio\12.0\PlatformSDKs\android-ndk-r8e\toolchains\arm-linux-androideabi-4.6\prebuilt\windows\bin\arm-linux-androideabi-ld.exe: S:\Delphi\Android\BitStack\V0.2\Android\Debug\CameraComp.o: in function System::Generics::Collections::TList__1<System::DelphiObject<System::Classes::TCollectionItem> >::~TList__1():C:\Delphi\Android\BitStack\V0.2/CameraComp.pas:813: error: undefined reference to 'System::_BeforeDestruction(System::DelphiObject<System::TObject>, signed char)'
S:\Users\Public\Documents\RAD Studio\12.0\PlatformSDKs\android-ndk-r8e\toolchains\arm-linux-androideabi-4.6\prebuilt\windows\bin\arm-linux-androideabi-ld.exe: S:\Delphi\Android\BitStack\V0.2\Android\Debug\CameraComp.o: in function System::Generics::Collections::TList__1<System::DelphiObject<System::Classes::TCollectionItem> >::Error(System::UnicodeString, NativeInt):C:\Delphi\Android\BitStack\V0.2/CameraComp.pas:821: error: undefined reference to 'System::_RaiseAtExcept(System::DelphiObject<System::TObject>, void*)'
S:\Users\Public\Documents\RAD Studio\12.0\PlatformSDKs\android-ndk-r8e\toolchains\arm-linux-androideabi-4.6\prebuilt\windows\bin\arm-linux-androideabi-ld.exe: S:\Delphi\Android\BitStack\V0.2\Android\Debug\CameraComp.o: in function System::Generics::Collections::TDictionary__2<int, System::DelphiInterface<System::Classes::IInterfaceList> >::TKeyCollection<>::TKeyCollection(System::DelphiObject<System::Generics::Collections::TDictionary__2<int, System::DelphiInterface<System::Classes::IInterfaceList> > >):C:\Delphi\Android\BitStack\V0.2/CameraComp.pas:2238: error: undefined reference to 'System::_InstWeakCopy(System::DelphiObject<System::TObject>&, System::DelphiObject<System::TObject>)'
S:\Users\Public\Documents\RA
哈!
好像我成功解决了这个问题!
如上面的评论所述,SDK当然也可以运行,IDE也可以,唯一的区别就是项目。
我钻了一段时间,看起来终于找到了可行的解决方案!
https://forums.embarcadero.com/thread.jspa?messageID=626522
在上面的主题中,有人声明并建议单独运行Build,然后再尝试编译并运行。
在运行Build并解决了一些较小的错误和警告(由于我的错误,例如,图标位置未更改为网络驱动器路径)之后,编译器简单地通过并在设备上运行了应用程序!:O
因此,重新构建程序可以解决问题。:/
如果这对于某些人来说很明显,我感到很抱歉,但是我,自从我进入delphi以来,我一直只执行“编译并运行”命令,所以甚至都没有考虑过尝试这样做。
无论如何,我希望这不会成为垃圾问题... :)