我有一個非常簡單的問題,包括將C庫鏈接到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"
主要包含兩個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 64日食開普勒編譯它,我得到:
Mylib_1.h error: Mylib_2_type_t does not name a type
main.cpp error: Mylib_2_function1 was not declared in this scope
...
只有以上部分被標記爲在eclipse錯誤,頭,看到包含罰款。
此外,根據蝕,則__cplusplus標誌爲假成Mylib_2.h但真正進入Mylib_1.h一些蝕誤差的
思考,我試圖經由克手動構建項目++(v4.6.3)但當我試圖鏈接庫.o與main.cpp時,我遇到了同樣的問題。
似乎很愚蠢,但我無法弄清楚它會是什麼。任何建議?
謝謝
如果您認爲這個問題與include有關,我建議您從預處理器執行後將編譯的文件的內容來看看。要做到這一點,請啓用'-E'選項來執行g ++編譯器,並在生成的文件內部查看一切是否正常。開始main.cpp文件 – Amadeus
好吧,我已經檢查了main.cpp和Mylib_1.c。進入Mylib_1。c一切似乎都很好:所有來自Mylib_2.h的數據都在那裏。在main.cpp中,雖然Mylib_2.h被命名了一次,但其中沒有任何數據存在... –