私のプロジェクトは元々バイナリ互換性に設定されていましたが、構築されていませんでした。だから私は最初にそれを互換性なしに設定しました、それはそのようにうまく構築されました。次に、それをバイナリ互換性に戻し、以前に生成されたファイルを上書きすると、正常に機能しました。
なぜこれが起こらなければならないのですか?
私のプロジェクトは元々バイナリ互換性に設定されていましたが、構築されていませんでした。だから私は最初にそれを互換性なしに設定しました、それはそのようにうまく構築されました。次に、それをバイナリ互換性に戻し、以前に生成されたファイルを上書きすると、正常に機能しました。
なぜこれが起こらなければならないのですか?
使用しているバイナリ互換の場所は実行可能ファイル自体であり、保存されているbincompatバージョンではないと推測するのは危険です。
コード内で公開されているcomインターフェースを変更すると、バイナリ互換性が失われ(インターフェースの拡張は回避できますが、既存のインターフェース/タイプは変更できません)、ビルドが妨げられます。
互換性なしでビルドするように設定すると、チェックが破棄され、実行可能ファイルがビルドされます。
次に、それをバイナリに戻しました。これが、バイナリ互換バージョンを個別のコピーではなく、ビルドされたexe自体にポイントしていると思う理由です。そのため、実行可能ファイルは自動的にそれ自体と互換性があり、ビルドが可能でした。
VB6 には dll/exe への参照を開いて解放しないというバグがあると思います。そのため、バイナリ互換性を使用している場合は、VB6 を閉じて再度開いてビルドすると役立つ場合があります。