現在、クライアントのブランディングを目的として、MFC ベースのアプリケーションから DLL に多くのコードを移植しています。
珍しい問題に遭遇しました。このコードは、両方のシステムで同じです。
// ...
CCommsProperties props;
pController->GetProperties( props );
if (props.handshake != HANDSHAKE_RTS_CTS)
{
props.handshake = HANDSHAKE_RTS_CTS;
pController->RefreshCommProperties( props );
}
// ... in another file:
void CControllerSI::RefreshCommProperties ( const CCommsProperties& props )
{
// ... code ...
}
CommProperties は通信設定、シリアル化などのラッパーであり、pController は ControllerSI 型であり、それ自体が実際の通信とアプリケーションの間のレイヤーです。
元の MFC バージョンでは RTS-CTS へのハンドシェイクの設定が固執しますが、DLL バージョンとして実行すると、関数に入るとすぐに 0 にリセットされます。コードは完全にコードの DLL セクションに含まれているため、境界はありません。
元のモジュールと新しいモジュールの主な違いは、さまざまなダイアログを呼び出す変数が削除され、#include が削除されたことです。
これで午後を失いましたが、これ以上失いたくありません...