0

この質問にはおそらく数え切れないほどの回答が寄せられています。似たような質問を読んだことがありますが、まだ理解できていません。

私は libaiml プロジェクトのソースを持っています。これは、chatterbox プログラムの仕様である aiml の C++ インターレプターです。

サンプル プログラムのソース内には、ヘッダー ファイルへの #include 呼び出しが含まれています。

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

ヘッダー ファイルがあり、プログラムをコンパイルしてリンクすると、ヘッダー ファイルが見つからないと表示されます。

さまざまな回答で、ヘッダー ファイルをスタティック ライブラリ (.a ファイル) にコンパイルする必要があると述べられていますが、ライブラリ バイナリにコンパイルされていない場合、プログラムは .h ファイルをどのように参照しますか?

また、srcs を G++ と ar でライブラリにコンパイルしようとしましたが、多くのエラーが含まれています。私は何か間違ったことをしていますか?

4

1 に答える 1

1

私は何か間違ったことをしていますか?

はい:あなたは実際にあなたに何が起こっているのかを完全に誤解しました。「ヘッダーファイルが見つからないと書いてあります」「プログラムをコンパイルしてリンクしました」とおっしゃっていました。

しかし、実際に起こっていることは、プログラムをコンパイルしてリンクに失敗したことであり、エラーはヘッダーファイルとは何の関係もありません。むしろ、リンク時にシンボルが欠落しています。

問題を解決するには、ライブラリを実行可能ファイルにリンクする必要があります(このライブラリは、ディレクトリにビルドしたときにビルドされている必要があります。次のようなものが機能するはずです。libaiml ../src/

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