[問題] Include header 檔案問題

作者: skyconquer (梅郭曲)   2021-01-21 15:20:39
開發平台(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
作者: nh60211as   2021-01-21 15:29:00
你的make或是qmake檔案有包含這些C header的路徑嗎

Links booklink

Contact Us: admin [ a t ] ucptt.com