64 ビット システムで実行する必要がある COM+ アプリケーション (主に vb6 ベース) があります。Oracle データベース (10g、32 ビット) と通信することになっています。XA を無効にするとすべて正常に動作しますが、有効にすると次のエラーが表示されます。
XA トランザクション マネージャーは、XA リソース マネージャー DLL 内の "GetXaSwitch" 関数を呼び出しました。「GetXaSwitch」関数の呼び出しに失敗しました: ファイル=d:\nt\com\complus\dtc\dtc\xatm\src\xarmconn.cpp 行=2503。
私のオラクルクライアントは10g 32ビットです。
32 ビットと 64 ビットの互換性についてはよくわかりませんが、アプリケーションがレジストリの WOW64 部分 ([hklm/software/wow6432node/microsoft/msdtc/mtxoci]) にある MSDTC dll を呼び出していることがわかります。レジストリのネイティブ 64 ビット部分にある XADLL にアクセスします ([hklm/software/microsoft/msdtc/xall])。
そこで、そこにある参照を 32 ビット dll に変更しようとしましたが、読み込まれませんでした。
このエラーを修正する方法について何か考えがある人はいますか?