当加入OEM Floating Point CRT (ARM only)组件的时候编译会提示FRCRT未定义,查MSDN都说wince6支持这个功能,百思不得其解,最后终于在网上查到了原因:
http://www.eggheadcafe.com/conversation.aspx?messageid=34789848&threadid=34572975
原文如下:
The VS2005 compiler used by PB for CE6.0 emits no VFP instructions and unless you implement FPCRT.DLL for an ARM
then all CE implementations are integer (default MS implementation of FPCRT uses software emulation), even if you
have a hardware VFP in your core (e.g. ARM11 or Cortex-A8). To actually use the VFP you must do the following:
1. Use SYSGEN_OEM_FPCRT - catalog item "OEM Floating Point CRT (ARM only)
2. Download the VFPv2 library support from the ARM website and incorporate it into your build:
www.arm.com/products/os/windowsce_vfp_dl.html
Instructions are included with the download from ARM.
My tests show a 4x increase in performance on floating point operations on a release build on an ARM1136JF-S core.
我的理解:FPCTR组件只是加入了对相关函数的引用定义,具体实现还需要OEM来实现。如果CPU不支持硬浮点是不需要加入这个组件的。