このdlsym関数はキャッシュを行いません。これは単に ELF シンボル テーブルにアクセスしているだけです (あまりうまく実装されていないハッシュ テーブルを使用しています)。
dlsym同じ名前とライブラリを何度も (たとえば、何百万回も)呼び出すことは避けるべきだと思います。
怠惰な手法を使用する場合があります。たとえば、dlsym呼び出しで使用される名前とライブラリを (構造体またはクラスの一部で) dlsym-ed 関数ポインターと一緒に配置しdlsym、そのポインターが null の場合にのみ呼び出します。
dlsymまた、できるだけ早く失敗をキャッチしたい場合もあります。
FWIW、あなたは何度も電話をかけることができdlopenますdlsym。特に、私のmanydl.cの例が示すように、Linux では何十万ものdlopen-ed 共有ライブラリーを持つことができます。ただし、内部に -ed 関数のアクティブな呼び出しフレームがまだある場合は、ライブラリを -ing しないでください。実際には、呼び出すことはなく、プログラムは引き続き動作します (わずかなプロセス アドレス空間リークが発生します)。 dlclosedlsymdlclose