VxWorks653入门03:C++支持

本文介绍如何在VxWorks653工程中使用和编译运行C++代码。

首先按照VxWorks653入门1:653初探中的流程创建一分区或者多分区工程。

一分区

在创建好的一分区工程中的分区程序子工程添加新文件

new file

设置文件名

name

点击结束完成cpp文件创建,文件为空白。

在空白C++文件中添加代码

1
2
3
4
5
#include <iostream>

extern "C" void showHello(){
std::cout<<"C++ hello world."<<std::endl;
}

编译工程,报错为

error

显示为std::cout,delete,__cxa_begin_catch,__cxa_end_catch,_Unwind_Resume等等未定义。

那就把需要的库加上。修复编译错误

再次编译,显示结果为

error

提示.rodata和.text有重叠(overlap)了。

error

我们把这几个部分的空间调大一点,然后正常编译。

在分区程序子工程中的用户程序入口usrAppInit.c中的usrAppInit函数中调用接口

1
2
3
4
5
void usrAppInit()
{
...
showHello();
}

再次编译,然后仿真运行

sim

三分区

三分区和之前一样,效果为

3p