天马行空 发表于 2024-4-22 11:14:32

Embedded Studio环境下如何C和C++混合编程?

ES工程中加入了一个.CPP文件,结果编译时提示无法识别CLASS关键字,有谁知道如何设置才能C和C++混合编程?

qinfeng173 发表于 2024-4-22 12:21:37

Options -> Build -> Is C++ Project,设为Detect或者Yes.

eric2013 发表于 2024-4-22 13:53:28

看下这个说明是否有帮助
https://wiki.segger.com/C%2B%2B_Support_in_Embedded_Studio

天马行空 发表于 2024-4-22 14:38:57

按照大家提供的方法我试和哈,,,
可以编译C++文件了,但是编译C文件的时候报一堆的类型匹配错误,主要都是THREADX的C文件,可能时C++编译时的类型检查更严格的原因。



不过还是谢谢大家,我自己再摸索看看。

h_007 发表于 2024-4-22 18:05:34

天马行空 发表于 2024-4-22 14:38
按照大家提供的方法我试和哈,,,
可以编译C++文件了,但是编译C文件的时候报一堆的类型匹配错误,主要都 ...

应该是:return_ptr = TX_NULL;

天马行空 发表于 2024-4-23 14:39:12

h_007 发表于 2024-4-22 18:05
应该是:return_ptr = TX_NULL;

我截图的那段代码时threadX的内核代码,写法毋庸置疑

wanglehui_12 发表于 2024-4-23 15:02:48

天马行空 发表于 2024-4-23 14:39
我截图的那段代码时threadX的内核代码,写法毋庸置疑

试试这个呢?


天马行空 发表于 2024-4-23 15:13:32

自己摸索了很多次,总算可以在ES环境下C和C++混合编程了,简单总结一下,希望有用到的朋友们少走弯路。
1、首先目前新版本的ES是默认就支持C和C++混合编程的,无需设置什么。老版本可能要装C++库什么的。
2、C和C++相互调用,最重要的是文件编写要规范。可参考ST库头文件或threadX内核头文件,
    所有C头文件都要用 #ifdef __cplusplus       extern "C" {             #endif
                               #ifdef __cplusplus   }      #endif
    包裹,我的问题就出在这里,自己写的C文件没有考虑那么多,结果导致编译出现各种问题。
3、C++文件命名一定要是CPP结尾,ES会自动识别。

eric2013 发表于 2024-4-23 15:22:59

天马行空 发表于 2024-4-23 15:13
自己摸索了很多次,总算可以在ES环境下C和C++混合编程了,简单总结一下,希望有用到的朋友们少走弯路。
1 ...

谢谢分享最终解决办法。

wdliming 发表于 2024-4-23 20:51:36

天马行空 发表于 2024-4-23 15:13
自己摸索了很多次,总算可以在ES环境下C和C++混合编程了,简单总结一下,希望有用到的朋友们少走弯路。
1 ...

那还是挺牛逼了啊

tangqianfeng 发表于 2024-4-24 07:14:33

谢谢分享。
页: [1]
查看完整版本: Embedded Studio环境下如何C和C++混合编程?