c++ - 使用 CMake 混合 C 和 C++

标签 c++ c cmake

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

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

unknown type name ‘class’

Added: The third-party library is here https://github.com/0xmalloc/c-log
The author say it's friendly to both C and C++

最佳答案

这里有两个选项:

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

我相信该库的作者误导了您,因为该库显然是针对 C++ 的( header 中的类绝对是最明显的尖叫 C++ 的东西)。

关于c++ - 使用 CMake 混合 C 和 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48249393/

相关文章:

c++ - 使用 SVM 进行目标检测

c++ - 在 linux 上安装 cpp 库

c++ - 同时安装ifort和icc

curl:RSA_padding_check_PKCS1_type_1:无效填充

c - 编写一个 C 程序,从附带的数据文件中读取整数,并使用插入排序将排序后的数据存储到数组中

c++ - Codeblocks 中的图形程序

python - 为 Windows 构建 Vulkan 工具

c++ - 如何在 CMake 中导入库

cmake - 自定义 cmake FindXXX.cmake 回退到默认位置

c++ - 如何通过NodeMCU从网络获取数据