[問題] Include header 檔案問題

看板C_and_CPP作者 (梅郭曲)時間3年前 (2021/01/21 15:20), 3年前編輯推噓0(001)
留言1則, 1人參與, 3年前最新討論串1/1
開發平台(Platform): (Ex: Win10, Linux, ...) Ubuntu 20.04.1 LTS 編譯器(Ex: GCC, clang, VC++...)+目標環境(跟開發平台不同的話需列出) gcc (純 C 程式碼的部份) Qt Creator 4.12.0 + g++ 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) Qt 一開源模擬運算 C Library 問題(Question): 各位先進好,小弟在做個人練習專案,由兩部份組成: (1) 我自己寫的 Qt GUI (2) 一個由他人寫的開源模擬運算部份,是用純 C 寫成。 我現在的作法是,修改"純C程式碼"部份的 Makefile 都是編譯後不連結,將得到的 *.o files 用 "ar rcs" 指令包成一個 *.a file。 然後在 Qt Creator 中用 "Add Library" 的方式將該 *.a file加入, 在 Qt C++ 程式碼的部份使用這些 C code。 跟我寫的GUI程式碼用 Qt Creator 合成一個執行檔來運作。 現在遇到一個問題是,在純 C 部份有一些要用在GUI上顯示 運算資料的數據,是寫成 struct 的形式,這些struct type 內還有 其他類型 struct type的資料,都是宣告在不同的 header file 內, 也就是說在純 c 部份內部會互相 include 來 include 去的。 但是在GUI部份如果要認得這些資料型態,變成我在Qt Creator內要指定 該 C header file 的路徑(假設叫做C_header_01.h) // C++ part #include "C_header_01.h 的路徑/C_header_01.h" 而該 C_header_01.h 又會include 另一個 C_header_02.h: // 在 C_header_01.h 內 #include "C_header_02.h" 在將所有 C 程式碼包成一個 *.a file 的階段沒有問題,但是在Qt Creator 內的 C++ part 要 include C_header_01.h 並使用定義在裡面的資料型態時, 就會跳出 "找不到 C_header_02.h" 的錯誤訊息。 不知道是不是跟我IDE環境建制有關? 請問有什麼方法可以解決嗎? 上面舉例的檔案都在不同路徑內。 我是希望能將 C library 都放在跟 GUI code 不同的地方,盡量 不要動到 C library 的程式碼,以因應未來可能的修改。 很新手的問題,但我偏偏想不出一個好一點的方法 QQ -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 59.124.207.79 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1611213641.A.CE4.html ※ 編輯: skyconquer (59.124.207.79 臺灣), 01/21/2021 15:22:54

01/21 15:29, 3年前 , 1F
你的make或是qmake檔案有包含這些C header的路徑嗎
01/21 15:29, 1F
感謝n大,我在 Qt Creator 將路徑加入 *.pro file 之後解決了,非常感謝。 ※ 編輯: skyconquer (59.124.207.79 臺灣), 01/21/2021 16:11:27
文章代碼(AID): #1W2Ij9pa (C_and_CPP)