0

这个问题可能已经被无数次回答了——我读过一些类似的问题,但我还是不明白。

我有 libaiml 项目的源代码——aiml 的 C++ 解释器,一个 chatterbox 程序的规范。

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

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

头文件在那里,我编译并链接了程序,它指出找不到头文件。

各种答案都表明需要将头文件编译成静态库(.a 文件),但是当 .h 文件未编译成库二进制文件时,程序将如何引用它?

我也尝试用 G++ 和 ar 将 srcs 编译成一个库,但它包含很多错误。我做错什么了吗?

4

1 回答 1

1

我做错什么了吗?

是的:您完全错误地陈述了实际发生在您身上的事情。你说“它说找不到头文件”,“我编译并链接了程序”。

但真正发生的是,你已经编译,链接程序失败,错误与头文件无关;相反,您在链接时会丢失符号。

要解决您的问题,您必须libaiml 链接到您的可执行文件(当您在目录中构建时应该已经构建了这个库../src/。这样的东西应该可以工作:

g++ -I../src -o program program.cc -L../src -laiml
于 2012-07-15T05:58:44.400 回答