将C和C ++与CMake混合使用

时间:2018-01-14 12:06:03

标签: c++ c cmake

我有一个用C语言编写的项目(在Linux上),现在想要使用提供.h和.c源文件的第三方C ++库。

我将.c文件重命名为.cpp,然后将该库包含在C项目中。但是,编译时会出现以下错误:

unknown type name ‘class’
  

已添加:第三方库在此https://github.com/0xmalloc/c-log
   作者说它对C和C ++都很友好

1 个答案:

答案 0 :(得分:3)

这里有两个选项:

  • 你使你的整个项目成为C ++ - 这并不意味着你需要将你的C代码转换为C ++,而是你可能不得不触及它的那一部分而且也需要C ++而不是C -only编译器
  • 提供包装器 - 通常如果你用C风格编写C ++代码(没有类等),你只需要为你的C ++函数执行extern "C" void foo()例程。但是,当您开始使用C不支持的功能时,您必须为C ++功能提供包装器,以便它可以暴露给应用程序的C部分。这样的程序可以从非常容易到非常复杂。例如,许多现代C / C ++ API也提供Python API。为了做到这一点而不必重写Python中的所有内容,作者创建了将C / C ++功能转换为Python的包装器。根据执行的程度,目标语言的功能(Python,以防我们从C / C ++转到Python)可用于更好的错误处理,类型检查,可读性,本机(到目标语言)数据容器等。

我确实相信该库的作者误导了你,因为该库明显是用于C ++的(标题中的类绝对是尖叫C ++的最明显的东西)。