私は/usr/include/gifti
に/usr/include/gifti
、libgiftiio.a
に/usr/lib
のライブラリファイル(giftiio)を持っています。リンカがオブジェクトファイルを見つけたにもかかわらず、私のプログラムで関数定義が見えないのはなぜですか?
私は簡単なプログラム、read_hemi.cc
でそれを使用しよう:
と、次のエラーを取得::私は、その後でこのプログラムをコンパイルしよう
#include <gifti_io.h>
int main(const int argc, const char *argv[]) {
gifti_image *out_im;
gifti_disp_lib_version();
}
/tmp/ccqWBaLb.o: In function `main':
read_hemi.cc:(.text+0x10): undefined reference to `gifti_disp_lib_version()'
ヘッダーファイルに定義されているすべてのものがアクセス可能であることに注意してください(gifti_imageタイプdef)。しかし、リンカーが私の-lgiftiio
フラグで文句を言っていなくても、オブジェクトファイルが見つかると、私は関数定義を取得しません。
おかげで、私はそれらを理解だと思います。ただし、順序を変更しても効果はありません。あなたのコマンドをコピーして貼り付けると、まったく同じエラーになります。 –
私は2つのコマンドを分割し、最初にコンパイルすることができます: 'g ++ -c -I/usr/include/gifti -I/usr/include/nifti read_hemi.cc' に続いて ' g ++ read_hemi .o -lgiftiio' これは同じエラーを返します –
@CarsonMcNeil答えを更新しました。 –