C++环境支持
DEMO工程
apps/demo/demo_hello
C++环境配置流程
- 1. 在工程中添加 cxx-runtime.cpp 和 cpp_run_init.c 文件
文件位于 ``apps/common/c++``目录下,需要将cxx-runtime.cpp 和 cpp_run_init.c链入到工程中。
2. 在文件sdk_ld_sdram.c 或 sdk_ld_sfc.c “.test”段和”.bss”段中添加以下段(一般发布的SDK都已经添加)
(.text) 的下一行添加 :
#if defined CONFIG_CXX_SUPPORT . = ALIGN(4); _ctors_begin = .; PROVIDE(ctors_begin = .); *(.ctors*) _ctors_end = .; PROVIDE(ctors_end = .); . = ALIGN(4); #endif
在 } >rom 的下一行添加 :
#if defined CONFIG_CXX_SUPPORT PROVIDE(ctors_count = _ctors_end - _ctors_begin); #endif
在*(.bss)的下一行添加 :
#if defined CONFIG_CXX_SUPPORT *(.bss.*) #endif
3. 调用C++代码前需要先用cpp_run_init()对C++环境进行初始化,如:
void app_main() { #ifdef CONFIG_CXX_SUPPORT //注意:使用时也可以不放置在这里调用,但必须在使用c++前进行调用初始化c++环境 void cpp_run_init(void); cpp_run_init(); #endif printf("\r\n\r\n\r\n\r\n\r\n -----------hello demo run %s-------------\r\n\r\n\r\n\r\n\r\n", __TIME__); os_task_create(hello_demo_task, NULL, 10, 1000, 0, "hello_demo_task"); }
4. 修改编译配置。(一般发布的SDK都已经添加)
-lstdc++ -fno-exceptions -fno-rtti
5. 将c++库“cpu/wl82/libstdc++/libcxx.a”添加到工程中。
6. 包含C++头文件路径 “include_lib/c++/” 和 “include_lib/c++/include/”
7. 在app_config.h 中添加定义
#define CONFIG_CXX_SUPPORT