2012-05-03 10 views
0

私は動的リンクライブラリを作成しました。私の唯一の問題は、私のメインプログラムが私のヘッダーファイルを認識しないことです。ヘッダーファイルは私のメインプログラムとは別のフォルダにあります。私はその後、/usr/local/libにlibにコピーし、その後Cヘッダファイルと動的リンクエラー

私は #include "myheader.h"を試してみましただけでなく、ここで #include "/folder/dir/myheader.h"

は私の.hが

extern int afunction(int,int); 
    extern int afunction(int,int); 

から構成するものであるこれまでのところ、このコードは

gcc -fPIC -c filename1.c 
    gcc -fPIC -c filename2.c 

    gcc -shared -o libMylib.so filename1.o filename2.o 

の作品

gcc main.c -L. -lMylib -o exeName -ldl 

と私は

" myheader.h : no such file or directory. 

は、ここに私のディレクトリ構造です:

にdirectory1 ---------------- folder1の(メインprogram.cを)

にdirectory1 ---- ------------ folder2(myheader.h、pgmの関数と共に)

私はすべてのコードを書いているので、正しい方向へのプッシュは役に立ちます。最後の段階。

+0

あなたのメインのパスを絶対にしてみてください。それがうまくいけば、パスエラーが発生します。 – evanmcdonnal

答えて

3

gcc ... -I<some directory to myheader.h>が必要です。これにより、コンパイラはヘッダファイルを見つけることができます。

+0

これは動作しますが、私の関数への未定義参照を取得します – sergio

+0

オブジェクトコードにコンパイルしていれば、 'I'フラグを参照してください。リンクしないと、-Lフラグと' LD_LIBRARY_PATH'環境変数を参照しません。マニュアルページの –

+0

私はそれを理解したと思う。私はポインタのコードを持っていないし、私のメインプログラムではない。 – sergio

1

libヘッダーファイルは、現在のプログラムと同じフォルダに置くことができます。

など@Ed Heal said ..インクルードヘッダフォルダに-I<path>を追加しました。