Linux の 64 ビット CentOS バージョンを使用しています。C および C++ プログラムで静的ライブラリ (libUtility.a) を作成して使用しようとしています。ライブラリを C でコンパイルし、ar で libUtility.a ファイルを生成できます。次に、それを自分のプログラムにリンクしようとします。Cコンパイラを使用するとすべてが機能します
cc myprog.c -o myprog -I/usr/local/include -L/LocationOfMyLib -lUtility
ただし、g++ コンパイラを使用すると、エラーが発生します。
g++ myprog.c -o myprog -I/usr/local/include -L/LocationOfMyLib -lUtility
myprog.c: In function 'int main(int, char**)':
/tmp/cckIN1Yk.o: In function `main':
myprog.c:(.text+0x41): undefined reference to `Utility_HiWorld(char*)'
collect2: ld returned 1 exit status
C および C++ の経験はある程度ありますが、独自のライブラリを作成した経験はありません。このライブラリには、Utility_HiWorld() という名前のサブルーチンが 1 つだけあります。そして、myprog.c はその 1 つのサブルーチンのみを呼び出します。ここで何が間違っていますか?
NEW: わかりました。「extern "C"」は絶対に使用しませんでした。私はそれが何であるかさえ知りませんでした。それで解決しました。