C++ 共有ライブラリとの GCC リンクを見たことがありますが、それを自分で再現することはできません。最初に、テスト関数を含む C++ ライブラリを作成します。
g++ -shared -o libtest.so test.c
次に、ライブラリ関数を呼び出してこのようにコンパイルするテスト main 関数があります。
gcc -o prog.out main.c -L. -ltest
それから私はエラーを受け取ります
undefined reference to 'testfunc'
これは、ライブラリ内の異なる参照が原因だと思います... Cは関数testfuncに名前を付け、C++は関数に名前を付けます[いくつかのもの] __ testfunc [おそらくまたいくつかのもの]。
私も使ってみました
gcc -o prog.out main.c -l:libtest.so
しかし、これは同じエラーになります。
したがって、私の質問は次のとおりです。c++ライブラリをgccでacファイルにリンクするにはどうすればよいですか?
更新: を使用できることはわかっていますextern "C"
が、それは解決方法ではありません。代わりに、リンカーのパラメーターがいくつかあるのではないでしょうか?
Update2: 最初の部分が c++ でコンパイルされ、gcc でリンクされている可能性も考えられます。これも試しました:
g++ -c testlib.c -o testlib.o
gcc -shared -o libtest.so testlib.o
gcc -o prog.out -l:libtest.so
まだ機能しません。フラグに何か問題がありますか?