2

古い C++Builder 10.2 プロジェクトを 10.2.3 にアップグレードするのに非常に苦労しています (64 ビット PC で Clang コンパイラ、32 ビット アプリケーションを使用しています)。

10.2.3 のインストールは正常に完了しました (クリーンな Windows 10 PC で)。プロジェクトがコンパイルされ、リンクされます。これまでのところ、誰もが満足しています。

しかし、デバッガーでアプリケーションを実行するとthis、MainForm (歴史的な理由から、かなり大きなオブジェクト) のポインターが、単一のメソッド呼び出し呼び出しで突然ガベージに変化することがわかります (独自のメソッドの 1 つを呼び出すとき - 直後)。コンストラクターは終了します)、重大な失敗につながります。

特定のメソッドの呼び出し規約をコメントアウトしようとしました__fastcallが、デバッガーはもう少し先に進みますが、ポインターの破損__fastcallが原因で次のメソッド呼び出しでクラッシュします (1000 以上のメソッドがあり、それらをすべてコメントアウトすることはオプションではありません)。this__fastcall

誰が何が起こっているのか手がかりを持っていますか?

新しい Clang コンパイラ スイッチでしょうか。

大きなオブジェクトに問題がありますか?

また、10.2.3 でまったく新しいプロジェクトをゼロから構築しようとしましたが、運が悪かったため、同じ奇妙なことが起こりました。

4

1 に答える 1