0

私は 2 つのプロジェクトを持っています。1 つは静的ライブラリを作成し、もう 1 つはそれを使用しています。1 つ目は、liboutputdevice.a というファイルを作成します。私がそれを構築すると、すべてがうまくいきます。

次に、上記のライブラリを使用#include "outputdevice.h" し、関数を含めて呼び出す 2 番目のプロジェクトがあります。

initdevice("sdfs");

outputdevice.h で宣言され、上記の静的ライブラリで実装されます。g++ リンカー、ライブラリ、およびライブラリ検索パスをクロスすることにより、最初のプロジェクトにリンクされたテスター プロジェクト。

そのプロジェクト(テスター、2番目のプロジェクト)をビルドしているとき、最初のプロジェクトでエラーが発生し、Undefined reference to 'pthread create' 突然...(最初のプロジェクトのコンパイルプロセスに -lpthread を含めましたが)。誰かがそれが問題であると言うことができますか?

4

1 に答える 1

0

インクルード ファイルの場所をコンパイラ/IDE に通知する必要があります。ライブラリ ファイル (通常は .lib 拡張子を持つ) とインクルード ファイル (.h または .hpp) は同じではないことに注意してください。ライブラリはリンカーに追加する必要がありますが (正しく行ったように)、インクルード ファイルはプロジェクトのベース ディレクトリからもアクセスできる必要があります。インクルードのメイン パスがプロジェクトのものと同じでない場合、追加のインクルードを探す必要があるかどうかをコンパイラに伝える必要があります。通常、これはコンパイラ呼び出しの -I オプションによって行われます。

g++ main.cpp -I path/to/other/includes/dir 

IDE のプロジェクト設定で直接設定することもできます。

于 2013-05-05T08:06:45.220 に答える