タイプ ライブラリは、ほとんどの場合、プラットフォームにとらわれないように意図されていました。Microsoft によって出荷された Windows プログラミングで遭遇するほとんどのものは、. AnyCPU プラットフォーム ターゲットによって公開され、32 ビット モードまたは 64 ビット モードのいずれかで実行できるコードを非常に簡単に記述できるようにする .NET で最も顕著です。Microsoft.Office.Interop の相互運用クラスを使用する場合も、Office プログラム内で実行される拡張機能を作成する場合も、特別なことは何も必要ありません。まったく同じタイプ ライブラリを使用します。
しかし、64 ビット コードで動作するとはまったく考えていなかったプログラマによって作成されたタイプ ライブラリを使用すると、必ずしもうまくいくとは限りません。最も典型的な問題は、実際にはフードの下のポインターであるが、長い間典型的な選択である整数型にフラット化されているメソッド引数によって引き起こされます。これらのポインター値は、64 ビット モードでは 64 ビット幅であり、それらを 32 ビット整数に詰め込もうとすると誤動作します。HANDLE 値が良い例です。
最も悪名高い oops は Microsoft のものです。dbase エンジンとの通信に広く使用されているデータベース プロバイダ ライブラリである ADO のタイプ ライブラリが破損していました。彼らは、Windows 7 SP1 で重大な変更を行いました。この変更は、プログラマーがそのオペレーティング システムでプログラムを構築し、それが古いバージョンの Windows では動作しないことがわかったときに、広範囲にわたる悲惨な状態を引き起こしました。おっと、64 ビット オペレーティング システムでは 32 ビットであると想定されていた型が、64 ビット OS では 64 ビットであると宣言されていました。これは、Windows SDK バージョン 8、adoint_Backcompat.h ヘッダー ファイル、ADO_LONGPTR タイプがある場合に表示されます。adoint.h でlongに置き換えられます。
これを整理するには、元のプログラマーと協力するのが最善です。または、COM サロゲートを利用するために、64 ビット プロセスから呼び出されたときに 32 ビット コードをプロセス外で実行できます。