ModusToolbox 是否支持C++

公告

大中华汽车电子生态圈社区并入开发者社区- 更多资讯点击此

Tip / 登入 to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
Weeden_ding
Level 2
Level 2
Distributor - Weikeng(GC)
25 sign-ins 5 replies posted 10 questions asked

Hi,

 客户有算法是用C++在电脑上实现,现在需要把该算法移植到PSOC6上,

1> 请问ModusToolbox是否支持C++?

 2> 客户只是把算法移植到C++,原有的控制逻辑仍使用C语言,这种情况是否可以混编?

3> KEIL ,IAR 是否支持C++和C语言混编?  IAR的设置里是可选C  或C ++ ,或者aotu,auto的话是自动选择某一种?还是支持混编?

谢谢!

1 解答
Charles_Lai
Moderator
Moderator
Moderator
500 replies posted 250 solutions authored 250 sign-ins

Hi,

  1. ModusToolbox默认没有包含C++编译工具链,从例程和规划层面来看也不计划支持C++,所以官方角度而言,它不支持C++。
    (然而,ModusToolbox本身包含了Eclipse这个IDE。我们知道,Eclipse支持大量标准化插件,且Eclipse生态链是包含对C++的完整支持的,故借助Eclipse本身优异的二次拓展能力,使之支持C++不是没有可能的。此外,ModusToolbox各个组件之间是松耦合的,即它的编译链、编程环境、例程、支持库、中间件等部分,都是彼此独立的,这也有助于你二次拓展。所以如果你很有必要,也有条件的话,你可以自行尝试在ModusToolbox之上增加C++的支持。这也是ModusToolbox本身的内涵和魅力所在。)
  2. C/C++之间一定程度上支持相互调用,您可以参见网上的例子:
    https://segmentfault.com/a/1190000022099166
    https://www.cnblogs.com/GyForever1004/p/9354387.html
    https://cloud.tencent.com/developer/article/1130195
    但实际操作起来比较困难。因为这种相互调用通常在一种语言wrap另一种语言的场景中才容易成功,不太适合两种语言并行开发且都积累了很多代码的情况;此外,C调用C++,一般需要先把C++代码用C++编译器编译出动态库,再通过封装层暴露给C代码,最后再用C编译器编译出最终的程序(这是因为C编译器不认识C++语法但C++编译器认识C语法),这样的操作就显得较繁琐,不推荐使用。
    故建议你考虑重写相关代码,统一在C语言框架中实现。
  3. KEIL/IAR不是支持混编,它们的选项是指它们官方提供对两种语言的支持,但一般同一时刻只支持其中一种语言。auto的意思是自动选取编译器。混合的相互调用是没有通用的解决方案的,都需要借助高级编程技巧,依实际项目而定。

Best regards

在原帖中查看解决方案

0 点赞
1 回复
Charles_Lai
Moderator
Moderator
Moderator
500 replies posted 250 solutions authored 250 sign-ins

Hi,

  1. ModusToolbox默认没有包含C++编译工具链,从例程和规划层面来看也不计划支持C++,所以官方角度而言,它不支持C++。
    (然而,ModusToolbox本身包含了Eclipse这个IDE。我们知道,Eclipse支持大量标准化插件,且Eclipse生态链是包含对C++的完整支持的,故借助Eclipse本身优异的二次拓展能力,使之支持C++不是没有可能的。此外,ModusToolbox各个组件之间是松耦合的,即它的编译链、编程环境、例程、支持库、中间件等部分,都是彼此独立的,这也有助于你二次拓展。所以如果你很有必要,也有条件的话,你可以自行尝试在ModusToolbox之上增加C++的支持。这也是ModusToolbox本身的内涵和魅力所在。)
  2. C/C++之间一定程度上支持相互调用,您可以参见网上的例子:
    https://segmentfault.com/a/1190000022099166
    https://www.cnblogs.com/GyForever1004/p/9354387.html
    https://cloud.tencent.com/developer/article/1130195
    但实际操作起来比较困难。因为这种相互调用通常在一种语言wrap另一种语言的场景中才容易成功,不太适合两种语言并行开发且都积累了很多代码的情况;此外,C调用C++,一般需要先把C++代码用C++编译器编译出动态库,再通过封装层暴露给C代码,最后再用C编译器编译出最终的程序(这是因为C编译器不认识C++语法但C++编译器认识C语法),这样的操作就显得较繁琐,不推荐使用。
    故建议你考虑重写相关代码,统一在C语言框架中实现。
  3. KEIL/IAR不是支持混编,它们的选项是指它们官方提供对两种语言的支持,但一般同一时刻只支持其中一种语言。auto的意思是自动选取编译器。混合的相互调用是没有通用的解决方案的,都需要借助高级编程技巧,依实际项目而定。

Best regards

0 点赞