Apple LLVMバージョン8.0.0(clang-800.0.42.1)を使用してコンパイルしています。それは約1200ファイルですが、私はそれらを以前使用しています。私は行ってそれらをすべてコンパイルしますが、問題はありません。私は静的ライブラリ(ar rcs libblib.a *.o
)を作成しますが、問題はありません。だから私の新しい図書館を使用しようとすると、私の問題があります。静的ライブラリリンクの問題定義されているシンボルの "未定義シンボル"
gcc main.c -L. -lblib
Undefined symbols for architecture x86_64:
"_N_method", referenced from:
_main in main-7fc584.o
ld: symbol(s) not found for architecture x86_64
しかし、これは定義されています。私はファイルが(ar -t libblib.a | grep N_METHOD.o
)含まれていることを確認してそこにあります。ソースファイルをチェックすると、ヘッダーファイルにあるように正確に名前が付けられたメソッドが存在します。私はここで何を問題にしていますか?私は完全な喪失に瀕しており、私は単純なものを見逃していると思っています。
nm -g N_METHOD.o
を行なったし、戻った:
0000000000000000 T __Z8N_methodP6stacks
ライブラリはCまたはC++で記述されていますか?それがC++の場合、名前は変更されます。 – Barmar
@Barmar:Cは_methods_をサポートしていません、OccamのカミソリはこれがC++だと伝えます;-) – Olaf
それはCです。私はちょうどN_methodをプレースホルダとして使用しています。 – Red