DelphiXE10.2.3 Firemonkey下窗体的编译异常处理
环境WIN10+Delphi XE10.2.3+HUAWEI MAte8
开发APP过程中对窗体的显示和切换时发现市场出现编译调试异常,不是语法问题,而是Firemonkey封装过程中对JAVA的那些东西的调用过程的问题.
错误:
Checking project dependencies…
Compiling CESA_APP.dproj (Debug, Android)
dccaarm command line for “CESA_APP.dpr”
f:\embarcadero\studio\19.0\bin\dccaarm.exe -$O- --no-config -M -Q -TX.so -AGenerics.Collections=System.Generics.Collections;
Generics.Defaults=System.Generics.Defaults;WinTypes=Winapi.Windows;WinProcs=Winapi.Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE -DDEBUG
-E.\Android\Debug -If:\embarcadero\studio\19.0\lib\Android\debug;f:\embarcadero\studio\19.0\lib\Android\Release;
F:\Embarcadero\3rdComponent\fgx_0.6.0.46_XE8\Design;F:\Embarcadero\3rdComponent\fgx_0.6.0.46_XE8\Library;
F:\Embarcadero\3rdComponent\fgx_0.6.0.46_XE8\Styles;F:\Embarcadero\3rdComponent\Listview;F:\Embarcadero\3rdComponent\Listview\Win32\Debug
-LEC:\Users\Public\Documents\Embarcadero\Studio\19.0\Bpl\Android -LNC:\Users\Public\Documents\Embarcadero\Studio\19.0\Dcp\Android -NU.\Android\Debug
-NSSystem;Xml;Data;Datasnap;Web;Soap; -Of:\embarcadero\studio\19.0\lib\Android\Release;F:\Embarcadero\3rdComponent\fgx_0.6.0.46_XE8\Design;
F:\Embarcadero\3rdComponent\fgx_0.6.0.46_XE8\Library;F:\Embarcadero\3rdComponent\fgx_0.6.0.46_XE8\Styles;F:\Embarcadero\3rdComponent\Listview;
F:\Embarcadero\3rdComponent\Listview\Win32\Debug -Rf:\embarcadero\studio\19.0\lib\Android\Release;F:\Embarcadero\3rdComponent\fgx_0.6.0.46_XE8\Design;
F:\Embarcadero\3rdComponent\fgx_0.6.0.46_XE8\Library;F:\Embarcadero\3rdComponent\fgx_0.6.0.46_XE8\Styles;F:\Embarcadero\3rdComponent\Listview;
F:\Embarcadero\3rdComponent\Listview\Win32\Debug -Uf:\embarcadero\studio\19.0\lib\Android\debug;f:\embarcadero\studio\19.0\lib\Android\Release;
F:\Embarcadero\3rdComponent\fgx_0.6.0.46_XE8\Design;F:\Embarcadero\3rdComponent\fgx_0.6.0.46_XE8\Library;
F:\Embarcadero\3rdComponent\fgx_0.6.0.46_XE8\Styles;F:\Embarcadero\3rdComponent\Listview;F:\Embarcadero\3rdComponent\Listview\Win32\Debug
–libpath:f:\Embarcadero\Studio\19.0\PlatformSDKs\android-ndk-r9c\platforms\android-14\arch-arm\usr\lib;
f:\Embarcadero\Studio\19.0\PlatformSDKs\android-ndk-r9c\sources\cxx-stl\gnu-libstdc++\4.8\libs\armeabi-v7a
–linker:f:\Embarcadero\Studio\19.0\PlatformSDKs\android-ndk-r9c\toolchains\arm-linux-androideabi-4.6\prebuilt\windows\bin\arm-linux-androideabi-ld.exe
-V -VN -NO.\Android\Debug CESA_APP.dpr
[DCC Warning] Unit_APP_PSVM.pas(102): W1000 Symbol ‘Get’ is deprecated: ‘Use Pairs property’
[DCC Hint] Unit_APP_PSVM.pas(32): H2219 Private symbol ‘Send_Convert’ declared but never used
[DCC Error] E2597 f:\Embarcadero\Studio\19.0\PlatformSDKs\android-ndk-r9c\toolchains\arm-linux-androideabi-4.6\prebuilt\windows\bin\arm-linux-androideabi-ld.exe: F:\SoftProject\CSEA Release\Mobile\Android\Debug\Unit_APP_Login.o:(.data+0x54): error: undefined reference to ‘__init_record_Unit_App_main’
f:\Embarcadero\Studio\19.0\PlatformSDKs\android-ndk-r9c\toolchains\arm-linux-androideabi-4.6\prebuilt\windows\bin\arm-linux-androideabi-ld.exe: F:\SoftProject\CSEA Release\Mobile\Android\Debug\Unit_APP_Login.o: in function Unit_app_login::TFm_APP_Login::Button1Click(System::TObject*):./Unit_APP_Login.pas:59: error: undefined reference to ‘Unit_app_main::Fm_APP_Main’
f:\Embarcadero\Studio\19.0\PlatformSDKs\android-ndk-r9c\toolchains\arm-linux-androideabi-4.6\prebuilt\windows\bin\arm-linux-androideabi-ld.exe: F:\SoftProject\CSEA Release\Mobile\Android\Debug\Unit_APP_PSVM.o:(.data+0x58): error: undefined reference to ‘__init_record_Unit_App_main’
f:\Embarcadero\Studio\19.0\PlatformSDKs\android-ndk-r9c\toolchains\arm-linux-androideabi-4.6\prebuilt\windows\bin\arm-linux-androideabi-ld.exe: F:\SoftProject\CSEA Release\Mobile\Android\Debug\Unit_APP_PSVM.o: in function Unit_app_psvm::TFm_APP_PSVM::SpeedButton1Click(System::TObject*):./Unit_APP_PSVM.pas:125: error: undefined reference to ‘Unit_app_main::Fm_APP_Main’
f:\Embarcadero\Studio\19.0\PlatformSDKs\android-ndk-r9c\toolchains\arm-linux-androideabi-4.6\prebuilt\windows\bin\arm-linux-androideabi-ld.exe: .\Android\Debug\CESA_APP.o:(.data+0x20): error: undefined reference to ‘__init_record_Unit_App_main’
f:\Embarcadero\Studio\19.0\PlatformSDKs\android-ndk-r9c\toolchains\arm-linux-androideabi-4.6\prebuilt\windows\bin\arm-linux-androideabi-ld.exe: .\Android\Debug\CESA_APP.o: in function _NativeMain:./CESA_APP.dpr:20: error: undefined reference to ‘Unit_app_main::Fm_APP_Main’
f:\Embarcadero\Studio\19.0\PlatformSDKs\android-ndk-r9c\toolchains\arm-linux-androideabi-4.6\prebuilt\windows\bin\arm-linux-androideabi-ld.exe: .\Android\Debug\CESA_APP.o: in function _NativeMain:./CESA_APP.dpr:20: error: undefined reference to ‘vtable for Unit_app_main::TFm_APP_Main’
f:\Embarcadero\Studio\19.0\PlatformSDKs\android-ndk-r9c\toolchains\arm-linux-androideabi-4.6\prebuilt\windows\bin\arm-linux-androideabi-ld.exe: .\Android\Debug\CESA_APP.o: in function _ZN8Cesa_app0E:CESA_APP(.data.rel.ro._ZN8Cesa_app0E+0x3cc8): error: undefined reference to ‘Unit_app_main::initialization()’
f:\Embarcadero\Studio\19.0\PlatformSDKs\android-ndk-r9c\toolchains\arm-linux-androideabi-4.6\prebuilt\windows\bin\arm-linux-androideabi-ld.exe: .\Android\Debug\CESA_APP.o: in function _ZN8Cesa_app0E:CESA_APP(.data.rel.ro._ZN8Cesa_app0E+0x3ccc): error: undefined reference to ‘Unit_app_main::Finalization()’
[DCC Fatal Error] F2588 Linker error code: 1 ($00000001)
Failed
Elapsed time: 00:00:12.6
经验总结:
1,除APP主窗体外的其他窗体,如果没有其他语法或业务逻辑冲突的情况下,在FormClose中定义 Action := TCloseAction.caFree; 可以最大限度避免这些窗体在编译时出现的错误.刚刚解决掉.
至于主窗体是否这样做,个人没有找到区别.
2,方法1中如果没有解决问题,很简单,右键点击APP项目,重新Build…现在错误消失了.
- 点赞
- 收藏
- 分享
- 文章举报
- android allowBackup设置为false引起编译异常处理
- opencv-2.4.5 编译异常处理
- xcode命令行编译时:codesign命令,抛出“User interaction is not allowed.”异常 的处理
- windows 编译版本异常处理
- Java第十二天(iead快捷键的使用、异常、try catch处理异常、finall用法、编译期间异常、自定义异常)
- 从GridView中直接导出数据到Excel文件 处理导出乱码 类型“GridView”的控件“XXXX”必须放在具有 runat=server 的窗体标记内。”的异常
- 软件调试笔记49 - 异常处理代码的编译
- 【整理】vs编译出现的异常处理方案(不停更新中)
- Java编译异常处理
- VC编译的时候因为加载符号导致编译过程异常缓慢的处理
- JAVA编译异常处理:java.lang.OutOfMemoryError: PermGen space
- Maven编译jar出现:无法确定 T 的类型参数的异常的原因和处理方案
- .NET mvc 中遇到 cshtml无法打开,编译异常情况处理方法
- VS2005 编译的exe运行出现 0x00905a4d 处未处理的异常: 0xC0000005: 读取位置 0x00905a4d时发生访问冲突
- 总结: C++(MFC)常见编译异常的处理方法
- VisualStudio 的一个bug:在64位系统中主窗体加载时不能捕获未处理异常
- 编译提示“未处理的‘System.ArithmeticException’类型的异常出现在 system.drawing.dll”
- 从GridView中直接导出数据到Excel文件 处理导出乱码 类型“GridView”的控件“XXXX”必须放在具有 runat=server 的窗体标记内。”的异常
- 从GridView中直接导出数据到Excel文件 处理导出乱码 类型“GridView”的控件“XXXX”必须放在具有 runat=server 的窗体标记内。”的异常
- java异常的学习和理解(包含异常的处理方式,异常的分类,运行时异常和编译时异常,自定义异常)