将C库链转换为C ++

时间:2013-08-21 22:31:15

标签: c++ c g++ extern

我有一个非常微不足道的问题,包括一系列C库到C ++主项目中。我有使用C的经历,但这是我第一次用C ++编程。

项目的结构是一个内部的文件夹:

  • 的main.cpp
  • 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使用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链接时,我遇到了同样的问题

似乎很愚蠢,但我无法弄清楚它会是什么。有什么建议吗?

谢谢

1 个答案:

答案 0 :(得分:0)

你有没有检查过你的行

#ifndef __MYLIB_X_H
#define __MYLIB_X_H

这两个文件真的不一样, 例如_ MYLIB 1 _和_ MYLIB 2 _H?