5

C++ で DLL を作成し、std::vector パラメータを取るメソッドをエクスポートしたいとします。異なる STL バージョン間のバイナリ互換性を期待できますか?

4

3 に答える 3

6

バージョン間の互換性の保証については認識していません。同じコンパイラでのリリースとデバッグの間でさえもです。

1 つの解決策は、ベクターのラッパーを作成することです。コンテナーから必要なすべての機能を持つクラスを作成し、クラスの唯一のメンバーであるプライベート ベクトルの操作に関してそれらを実装します。すべてのクラス コードを DLL に保持します。

于 2011-04-20T20:40:18.720 に答える
4

絶対違う!同じコンパイラの別のバージョンでコンパイルされた場合、互換性のある同じバージョンの STL に依存することさえできません。

于 2011-04-20T20:40:34.257 に答える
3

同じコンパイラの更新されたバージョンに含まれているバージョン間を意味する場合、はい、場合によっては機能する可能性がありますが、注意する必要があります。Windows上のIntelおよびMicrosoftコンパイラなど、いくつかの特殊なケースもあります。Intelは、バイナリ互換性を維持するためにかなり注意を払っています。少なくとも私が試したときは、常に非常にうまく機能しています。

他のほとんどの場合、答えはノーです。

于 2011-04-20T20:41:00.123 に答える