简单问题记录,C 与C++互相引用时应该多注意类似问题。
问题描述 :在项目中,建立了一个interface.h提供了一个C语言兼容的接口void work(),并在对应的interface.cpp中使用OpenCV完成相关处理实现。在PC端测试时,main.cpp成功调用了此接口。然而,在嵌入式环境中,process.c在尝试调用该接口时编译出错,提示OpenCV相关的hpp头文件中的 头文件无法找到。
定位结论 :interface.h直接包含了OpenCV的hpp头文件,而process.c在编译时通过包含interface.h间接引入了这些C++头文件,但GCC编译器对此类C++代码不支持。
解决方案:将OpenCV的头文件引用从interface.h移至interface.cpp中,这样在编译interface.cpp时G++编译器能够正确处理C++相关依赖,从而解决了问题。