我遇到了一个名为JSBSim的库问题。库本身并不那么相关,但问题是头文件中存在多个循环依赖的情况。
背景资料:
运行CentOS 7 64位 - 库与位于usr / local / include中的头以及usr / local / lib中相应的.a和.la静态链接
/ usr / local / include / JSBSim的目录结构如下:
initialization
input_output
math
models
simgear
FGFDMExec.h
FGJSBBase.h
我正在运行包含以下内容的makefile:
all:
g++ *.cpp -lJSBSim -o output
clean:
/bin/rm -f output
我正在为JSBSim编写一个包装器,其中包含以下基本骨架:
#include <JSBSim/FGFDMExec.h>
class JsbSimWrapper
{
};
运行makefile时出现以下错误:
compilation terminated.
In file included from /usr/local/include/JSBSim/FGFDMExec.h:47:0,
from JsbSimWrapper.hpp:7,
from main.cpp:1:
/usr/local/include/JSBSim/initialization/FGTrim.h:53:23: fatal error: FGFDMExec.h: No such file or directory
#include "FGFDMExec.h"
^
compilation terminated.
make: *** [all] Error 1
错误不是来自班级本身;而是包含库的主头文件。我做了一些调查,文件FGTrim.h位于初始化,在FGTrim的包含:
#include "FGFDMExec.h"
看起来FGTrim看不到FGFDMExec.h,因为它在一个目录下,但是FGFDMExec.h可以看到FGTrim就好了,因为在FGFDMExec.h中有以下内容:
#include "initialization/FGTrim.h"
有没有办法解决这个问题?我真的不想重新组织头结构或重写头并重新编译库,如果我不需要。
谢谢!
答案 0 :(得分:0)
我解决了这个问题。
我将makefile编辑为以下内容:
android:layout_below = "@id/textView1"
希望这有助于某人!