C和c++兼容性

c and c++ compatibility

本文关键字:兼容性 c++      更新时间:2023-10-16

我已经下载了用C写的代码,我已经写了一个CMakeLists.txt通过Eclipse访问它,它工作得很好,可以编译。

我的个人代码是用c++写的。我想从它调用C代码,我还创建了CMakeLists.txt,考虑到C代码的位置。

当我构建我的项目时,没有问题,只要我不做以下指示:


//在我的项目之一的。cpp:

#ifdef __cplusplus
   extern "C" {
#endif
   #include "C_header_file_I_need.h"
#ifdef __cplusplus
}
#endif

//.cpp


给出的错误告诉我程序试图用c++编译器编译C代码,因此:

  • 嵌套函数

  • void *

不被编译器接受。

我考虑过改编C程序,但是要做很多工作…

因为它是一个编译器每个CMakeLists,我想知道我如何能够独立编译我的项目的两个部分和链接他们,通过使用CMakeLists(因为我需要它在任何平台上工作)。

感谢您的帮助,请告诉我您需要查看的文件/日志

如果您只在c++中使用C函数,而不是其他方式,您可以将它们单独编译为目标文件(.o),然后在单独的步骤中将它们链接在一起。请记住,extern "C"仍然需要在你的c++代码中工作。

gcc -o foo.o foo.c
g++ -o bar.o bar.cpp
gcc -o final_build foo.o bar.o

(CMake根据文件扩展名自动执行此操作,如果您对自动执行此操作感兴趣)

编辑:当我发布这篇文章时,我并没有意识到评论已经说了所有这些。