最近、一部のVisual Studioプロジェクトをライブラリに分割しようとしましたが、ライブラリプロジェクトの1つを依存関係として持つテストプロジェクトでは、すべてが正常にコンパイルおよびビルドされたようです。ただし、アプリケーションを実行しようとすると、次の厄介な実行時エラーメッセージが表示されました。
実行時チェックの失敗#0-ESPの値は、関数呼び出し全体で適切に保存されませんでした。これは通常、異なる呼び出し規約で宣言された関数ポインターを呼び出した結果です。
関数の呼び出し規約(__cdeclなど)を指定したことはなく、すべてのコンパイラスイッチをデフォルトのままにします。私がチェックしたところ、プロジェクト設定は、ライブラリとテストプロジェクト全体で規約を呼び出すために一貫しています。
更新:開発者の1人が、「BasicRuntimeChecks」プロジェクト設定を「Both(/ RTC1、equiv。to / RTCsu)」から「Default」に変更し、ランタイムが消えて、プログラムが明らかに正しく実行されたままになりました。私はこれをまったく信用していません。これは適切な解決策でしたか、それとも危険なハックでしたか?