2012-07-14 77 views
0

这个问题已经被无数次地回答了 - 我已经阅读过一些类似的问题,但我仍然不明白。如何编译使用源头文件的应用程序?

我有libaiml项目的源代码 - 一个C++ interrepter,用于定义一个喋喋不休的程序规范。

在该示例程序的源代码,它包含一个#include调用一个头文件:

#include "../src/aiml.h" 

头文件是存在的,我编译和链接程序,它指出的头文件是找不到。

各种答案指出头文件需要被编译到一个静态库(.a文件)中,但是当程序没有被编译到库二进制文件中时,程序如何引用.h文件?

另外我试图将srcs编译成G ++和ar库,但它包含了很多错误。 我做错了什么?

+0

要只需添加 - 链接器不会对它无法找到 - 它可以,但是库中的所有方法都是未定义的。 – 2012-07-14 09:19:36

+1

如果它找不到头,是否提供了头的包含路径? – mathematician1975 2012-07-14 09:21:01

+2

相对路径看起来很可疑。你在编译cor rect目录(src'的同级目录)? – tripleee 2012-07-14 09:22:56

回答

1

我做错了什么?

是的:你完全错误地说明了实际发生在你身上的事情。你说“它表示无法找到头文件”,和“我编译并链接了程序”。

但真正发生的事情是,你已经编译和未能到程序链接,并错误有什么做的头文件;而是你在链接时错过了符号。

解决您的问题,您必须libaiml链接到你的可执行文件(这个库应该当你在../src/目录建已建成这样的事情应该工作:

g++ -I../src -o program program.cc -L../src -laiml 
相关问题