簡體   English   中英

將C庫鏈接到C ++

[英]Chain of C libraries into C++

我有一個非常瑣碎的問題,包括將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使用Mylib_2的typedef結構和函數


每個Mylib_x.h內部的所有內容都包裝在外部“ 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中為false,在Mylib_1.h中為true。

考慮到一些月食錯誤,我試圖通過g ++(v4.6.3)手動構建項目,但是當我嘗試將庫.o與main.cpp鏈接時,我遇到了同樣的問題。

看起來很愚蠢,但我不知道會是什么。 有什么建議嗎?

謝謝

你檢查過你的台詞了嗎

#ifndef __MYLIB_X_H
#define __MYLIB_X_H

兩個文件(例如_ MYLIB 1 _H和_ MYLIB 2 _H)確實有什么不同?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM