我有一个非常微不足道的问题,包括一系列C库到C ++主项目中。我有使用C的经历,但这是我第一次用C ++编程。
项目的结构是一个内部的文件夹:
主要通话 - >调用的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使用typedef结构和Mylib_2
的功能每个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中是真的
考虑到一些日食错误,我试图通过g ++(v4.6.3)手动构建项目,但当我尝试将库.o与main.cpp链接时,我遇到了同样的问题
似乎很愚蠢,但我无法弄清楚它会是什么。有什么建议吗?
谢谢
答案 0 :(得分:0)
你有没有检查过你的行
#ifndef __MYLIB_X_H
#define __MYLIB_X_H
这两个文件真的不一样, 例如_ MYLIB 1 _和_ MYLIB 2 _H?