Compile 時最後碰到這個問題.
這是在 C 中去 Link C++ 的 Code 產生的.
[TEXT]
linking…
.\Obj\Memory.axf: Error: L6218E: Undefined symbol __aeabi_unwind_cpp_pr0 (referred from array_new.o).
.\Obj\Memory.axf: Error: L6218E: Undefined symbol __rt_new_handler_addr (referred from new.o).
.\Obj\Memory.axf: Error: L6218E: Undefined symbol abort (referred from arm_exceptions_terminate.o).
.\Obj\Memory.axf: Error: L6218E: Undefined symbol __rt_eh_globals_addr (referred from arm_exceptions_globs.o).
Target not created
[/TEXT]
解決方法就是 Option -> Target -> Use MicroLib 關掉.
如果要引入一些標準的 C Library, 也不能使用 MicroLib .
像是要初始化 Heap , _init_alloc 也是要關掉 MicroLib 的支援.
註:
當使用 malloc 時, 會去 heap 取得一塊 memory 給程式使用, 但是
Keil 本身並沒有 heap 的管理機制, 要指定一塊 memory 給 heap 用.
這時就要先 initial heap, 要使用 _init_alloc 這個 function 才可以 allocate .
Ref.
MicroLib
jserv
主要是 C++ exception handling 預設參數不匹配的緣故
richliu
看起來不止, 連 malloc 也沒有.