C和C++兼容性

bweufnob  于 2022-09-21  发布在  Eclipse
关注(0)|答案(1)|浏览(275)

我已经下载了用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代码,因此:

  • 嵌套函数
    无效
  • ..

都不被编译器接受。

我考虑过改编C程序,但工作量很大……

由于每个CMakeList只有一个编译器,我想知道如何能够使用CMakeList独立编译项目的两个部分并将它们链接起来(因为我需要它在任何平台上工作)。

感谢您的帮助,请毫不犹豫地告诉我您需要查看哪些文件/日志。

bis0qfac

bis0qfac1#

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

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

gcc -o final_build foo.o bar.o

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

编辑:当我发布这篇文章时,我还没有意识到评论已经说明了这一切。

相关问题