1

実行時に共有ライブラリをロードする OS 依存の API をポータブル インターフェイスにラップしています。

問題は、close() 関数を文書化しているときに、dlclose() または FreeLibrary() 関数が失敗した場合に何が起こるかについての文書がないことに気付きました。ライブラリを閉じることができなかったので、ハンドルはまだ使用可能ですか? それとも、破損した状態ですか?まだ使えますか?

この情報は、API ユーザーに適切なドキュメントを書き、C++ インターフェイスで例外を保証するために必要です。

4

1 に答える 1

2

dlcose を呼び出すと、ハンドルは使用できなくなります。

http://pubs.opengroup.org/onlinepubs/007904975/functions/dlclose.html

dlclose() を使用してオブジェクトが閉じられると、アプリケーションはそのシンボルが dlsym() で使用できなくなったと想定する必要があります。

dlclose()何もしない可能性は十分にあります。他のライブラリにもライブラリへのハンドルがあるためです。クローズに失敗した場合は、通常、他の誰かがそれを使用していることを意味します。しかし、それはハンドルを介して再び使用できるという意味ではありません (つまり、死んでいます)。

エラーは通常、ハンドルが無効であることを示します。

于 2013-11-09T16:22:48.877 に答える