C和c++兼容性
c and c++ compatibility
我已经下载了用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根据文件扩展名自动执行此操作,如果您对自动执行此操作感兴趣)
编辑:当我发布这篇文章时,我并没有意识到评论已经说了所有这些。
相关文章:
- 将成员变量添加到共享库中的类中,不会破坏二进制兼容性吗
- 提升序列化 1:73 的向后兼容性问题
- 在gcc中意外调用了Const重载.编译器错误或兼容性修复程序
- 各种版本的 Mac OSX 向后兼容性如何?(Xcode C++
- Visual Studio 19-17 库兼容性根据 GL 标志
- C++ ABI 兼容性问题/张量流
- Oracle OCCI 和 g++ 7.1 的兼容性问题
- 为什么库API+编译器ABI足以确保具有不同版本gcc的对象之间的兼容性
- 对指针和恒常性兼容性的引用
- 检查操作系统兼容性
- 添加noexcept是否会破坏二进制兼容性
- 右值需要分配什么向后兼容性
- 如何在不添加对库的依赖的情况下添加与库结构的兼容性
- 在Qt中使用C++Lambda函数作为插槽是否有助于保持库的二进制兼容性?
- python 和 swig 版本兼容性问题
- Tensorflow C++ API 和 Caffe 兼容性问题与 Glog 相关
- 当要求兼容性时,核心OpenGL上下文?
- 启用和禁用 RTTI 的模块之间的兼容性
- 值为 std::string,同时保持向后兼容性
- 将 OpenGL 兼容性配置文件与英特尔 HD GPU + Mesa 结合使用