1

私はカメラ会社で働いており、顧客に SDK を提供しています。これまで、非デバッグ CRT に対してビルドされた SDK のリリース ビルドのみを提供していました。SDK パッケージの一部として、SDK の使用方法に関する多数の例を提供しています。サンプルには、デバッグ CRT を使用するデバッグ プロジェクト構成があります。場合によっては、これらの例とそれらがリンクするライブラリが異なる CRT を使用しているために、奇妙な動作に遭遇することがあります。

私の質問は、この種の状況に対処する適切な方法は何ですか? デバッグ CRT を使用するライブラリのデバッグ バージョンを配布する必要がありますか? pdb を提供しない限り、またはせいぜいストリップされた pdb を提供しない限り、すべての専有情報は隠されたままであるはずです。これを行う際に、最適化されていないより大きなバイナリ以外の悪影響はないと仮定するのは正しいですか?

デバッグ CRT にリンクされたデバッグ バイナリを配布するのは一般的な方法ですか、それともリリース ビルドのみを配布し続ける必要がありますか?

4

2 に答える 2

2

はい、ライブラリのデバッグ ビルドとリリース ビルドを配布する必要があります。CRT を共有できるように、それぞれ /MDd および /MD でビルドされます。たとえば、CRT の VS2005、VS2008、および VS2010 バージョンに対して構築された、さまざまなバージョンも。

これはもちろん痛いです。1 つのライブラリに絞り込むには、クライアント コードによって解放される必要のある C++ オブジェクトやポインターが公開されないように、パブリック インターフェイスを慎重に作成する必要があります。例外もタブーです。一般的な解決策は、COM を使用することです。特に、Automation と互換性のあるインターフェイスは、Windows で一般的に使用されているほとんどの言語ランタイムで使用できます。

于 2011-09-21T17:07:15.947 に答える
0

最適化されたデバッグビルドを検討することもできます。このビルドでは、ライブラリのデバッグバージョンを使用するように設定されていますが、リリースビルドの場合と同じようにすべての最適化フラグが設定されています。これにより、実行の微妙な違いがユーザーエクスペリエンスに影響を与えるのを防ぐことができます。

于 2011-09-21T16:40:49.537 に答える