1

C++ で大きな静的ライブラリを作成しています。そのライブラリでは、多くの静的ライブラリと動的ライブラリのシンボルを使用しています。私がそれを「作成」するとき、それは静的であるため、ライブラリに対してリンクする必要はありません。これが私の問題です。私の静的ライブラリは非常に一般的です。これは、同じインターフェースに対していくつかの実装を提供します (ドライバのような実装を見ることができます。libA は独自の実装を提供し、libB はそのような実装を提供します)。一部の実装はプラットフォームに依存するため、これらの実装は一緒に使用することを意図していません。

ライブラリにリンクすると問題が発生します。クライアントのコードがライブラリのシンボルに依存していない場合でも、クライアントは、ライブラリがシンボルを使用したすべてのライブラリに対してリンクする必要があります。たとえば、クライアントのコードがlibAのみに依存している場合でも、静的ライブラリには libB からのシンボルがいくつかあるため、クライアントはlibBに対してリンクする必要があります。

このような動作を排除し、実際に使用されているライブラリにのみリンクして、クライアントのコード内のシンボルを推測する方法を知っていますか?

ありがとうございました。

4

2 に答える 2

0

ライブラリを他のライブラリに対して動的にリンクしている可能性があります。論文の静的バージョンにリンクしてみてください。

于 2013-05-20T12:17:01.937 に答える
0

私が正しく理解している場合、ライブラリはdefinedクライアントのコードで期待されるシンボルを使用しようとしています。not linkクライアントのコードにない場合、ライブラリの特定の部分へのリンカがcertain symbols必要です。そうですか?

上記が要件に適合する場合は、http://en.wikipedia.org/wiki/Weak_symbolを検討してください。どのツール チェーンを使用しているかはわかりませんが、弱いシンボルがサポートされている場合は、条件付きリンクを実現するためのグレーな方法です。

于 2013-05-20T12:23:15.027 に答える