我有一个非常琐碎的问题,包括一个 C 库链到一个 C++ 主项目。我有使用 C 的经验,但这是我第一次使用 C++ 编程。
项目的结构是一个文件夹,里面有:
- 主文件
- Mylib_1.c
- Mylib_1.h
- Mylib_2.c
- Mylib_2.h
主要调用 -> Mylib_1.h 调用 -> My_lib2.h
//main.cpp
#include "Mylib_1.h"
//Mylib_1.h
#include "Mylib_2.h"
main 包含 Mylib_1 和 Mylib_2 函数和 typedef 结构
Mylib_1 使用 Mylib_2 的 typedef 结构和函数
每个 Mylib_x.h 中的所有内容都包裹在 extern "C" 之间,如下所示:
#ifndef __MYLIB_X_H
#define __MYLIB_X_H
#ifdef __cplusplus
extern "C" {
#endif
mycode
#ifdef __cplusplus
}
#endif
#endif
但是当我尝试在 Ubuntu 12.04 x64 上使用 eclipse kepler 编译它时,我得到:
Mylib_1.h 错误:Mylib_2_type_t 未命名类型
main.cpp 错误:Mylib_2_function1 未在此范围内声明
...
只有上述部分在 Eclipse 中被标记为错误,标题看起来很好。
此外,根据 Eclipse, __cplusplus 标志在 Mylib_2.h 中为假,但在 Mylib_1.h 中为真
考虑到一些 Eclipse 错误,我尝试通过 g++(v4.6.3)手动构建项目,但是当我尝试将库 .o 与 main.cpp 链接时遇到了同样的问题
似乎很愚蠢,但我无法弄清楚它可能是什么。有什么建议吗?
谢谢