C++ ライブラリをラップする C コード用のラッパー ライブラリを作成する必要があります。ユーザーがこのラッパー ライブラリのみをリンクする必要があり、リンカー コマンド ラインにすべての (C++) ライブラリも含める必要がないような方法でそのラッパー ライブラリを作成する方法はありますか?
テスト プロジェクトの構造は次のようになります。
.
├── lib
│ ├── cpp
│ │ ├── print.cc
│ │ └── print.h
│ ├── lib.cc
│ ├── lib.h
└── main.c
main.c は、私のライブラリを使用するサンプル C アプリケーションです。lib.h および lib.cc ファイルは、C バインディングを含むラッパー ライブラリです。私の C++ ライブラリは cpp サブフォルダーにあります。
現時点では、次の一連のコマンドを使用して動作させています。
cd lib
g++ -c lib.cc
ar rcs libib.a lib.o
cd ..
gcc -Ilib -Llib main.c -lib -lstdc++
ただし、ご覧のとおり、ユーザーのリンカー ステップでは、私の C++ ライブラリで使用される C++ ライブラリを含める必要があります。この場合、libstdc++.so (または -static が使用されている場合は libstdc++.a)。
libib.a にすべての C++ ライブラリを含めて、ユーザーが次のコマンドを使用してコンパイルできるようにしたいと考えています。
gcc -Ilib -Llib main.c -lib