[问题] 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