最近碰到一个奇怪的问题,需要将C++类打包成一个类库,不过在VC通过的前提下,使用ARM出现了链接错误:
TARGET CPPLab.elf
C:/ARM/ADSv1_2/bin/armlink -o CPPLab.elf -ropi -rwpi -entry 0x8000 AEEMOD~1.o CPPLab.o -first AEEMod_Load
Error: L6265E: Non-RWPI Section libspace.o(.bss) cannot be assigned to PI Exec region ER_ZI.
Error: L6248E: libspace.o(.text) in PI region 'ER_RO' cannot have address type relocation to __libspace_start in PI region 'ER_ZI'.
Finished: 0 information, 0 warning and 2 error messages.
NMAKE : fatal error U1077: “C:/ARM/ADSv1_2/bin/armlink” : 返回代码“0x1”
Stop.
经过对比之后,才想到,如果在工程中有出现“类”时,则一定要在这些文件里包含到 new delete这些操作符的重定义,因为Brew开发时,是没有这些语言要素的,也就会报上面那些奇怪的错误。