1

Visual Studio 2002 C (v7.0) Compiler と Intel Fortran 9.0.018 Compiler を使用してコンパイルおよびリンクされた C および Fortran ルーチンのスタティック リンク可能ライブラリがあります。

ライブラリ内の C コードは、Microsoft C-RunTime (MSCRT) 2002 スタティック ライブラリ (シングルスレッド) を呼び出してリンクしています。2002 CRT ライブラリの実際のバージョン番号は v7.0 だと思います

このスタティック ライブラリを「vs2002if9.lib」と呼びます。

Visual Studio の新しいバージョン (2003、2005、または 2008) を使用して、呼び出しプログラムが C ランタイム呼び出しに関してどのように動作するかを心配することなく、「vs2002if9.lib」に安全に静的にリンクできますか?

または、CRT 静的ライブラリのバージョンを混在させることで問題が発生していますか?

「vs2002if9.lib」をサードパーティのソフトウェア開発者に提供するとどうなりますか? 私は彼らにどのような要件を課していますか?

4

1 に答える 1

2

C ランタイムの混在は、これまでうまくいきませんでした。これが機能していることを確認できる唯一の方法は、静的にリンクされた C ランタイムの境界内でスタック/ヒープの使用を完全に分離している場合です [パラメーターを介して境界を超えるものはありませんが、vs2009if9 の値は何ですか? .lib 提供]。

例として、アプリケーション内でポインター [ヒープ メモリ] を割り当て、このポインターを提供したライブラリに渡す場合、どのヒープ マネージャーを使用する必要がありますか? 正解は、ポインターを管理するヒープ マネージャーですが、ライブラリは他のヒープ マネージャーを認識しません。ライブラリがアプリケーションで使用するためにメモリを割り当て、提供されたポインターを使用して解放/削除するのはアプリケーションの責任である場合、それはさらに醜くなります (悪い設計はありますが、それでも可能です)。ここでも、間違ったヒープ マネージャが使用されます。

于 2009-01-20T19:48:27.677 に答える