私はQuickFIXライブラリをMFCに統合しようとするGUIアプリケーションを開発しています。私は正常にすべての必要なlibsを追加し、logon()関数を使用して接続しようとすると、私は問題に遭遇しているが含まれています。まず、エンジンはconfigファイルの中でより多くのフィールドを要求し始めます。これはコンソールアプリケーションでは気にしません。 Visual Studio 12.0 \ VC \ include \ xtree 行:デバッグアサーション失敗!プログラム:C:\ Windows \ System32 \ MSVCP120D.DLLファイル:C:\ Program Files(x86) 327 式:map/iteratorsが互換性がありません "。 私がしようとしているのは以下の通りです: 私はメニューを持っています。メニューで "Start"を押すと、boolフラグがtrueに設定されます。私のOnKickIdle関数(アプリケーションはダイアログに基づいています)では、このフラグをチェックし、それが設定されていれば、私はSockeInitiatorの通常の起動を開始します。私がlogon()関数を呼び出すまでは、すべてOKです。呼び出し後、デバッグアサーションがスローされます。これは、コールスタックの出力です:!!のQuickFIXとMFC:Initiatior.logon()関数を使用してログインできない
msvcp120d.dllのstd :: _ Debug_message(のconst wchar_t型*メッセージ、CONSTはwchar_t *ファイル、unsigned int型ライン)ライン15 C++ OKKOIN_BOT.exeのstd :: _ Tree_const_iterator>>> :: =演算子!=(const std :: _ Tree_const_iterator>>> & _Right)Line 327 C++ OKKOIN_BOT.exe!::演算子!=(const std :: _ Tree_const_iterator>>> & _Right)Line 341 C++ OKKOIN_BOT.exe!のFIX :: SocketInitiator :: OnTimeoutパス(FIX :: SocketConnector & __formal)ライン227 C++ OKKOIN_BOT.exe!FIX :: SocketInitiator :: ONSTART()線93 C++ OKKOIN_BOT.exe!FIX ::イニシエータ:: startThread(void *型のP)ライン286 C++ [外部コード]
は、誰かが同じ問題を経験し、MFCにクイックフィックスを統合しようとしたことがありますか?あらかじめ大変ありがとうございました。ここ はまた私のOnKickIdle()関数の一部です:
LRESULT COKKOIN_BOTDlg::OnKickIdle(WPARAM wparam, LPARAM lparam)
{
if (b_startFlag)
{
std::string filepath = "quickfix-client.cfg";
FIX::SessionSettings settings(filepath);
Application app(settings);
FIX::FileStoreFactory storefact(settings);
FIX::ScreenLogFactory logfactory(settings);
FIX::SocketInitiator initiator(app, storefact, settings, logfactory);
b_initflag = TRUE;
//initializing the needed variables
initiator.start(); //use poll instead
Sleep(2000);
if (initiator.isLoggedOn())
{
MessageBox(L"Logged On", L"Information", MB_OK | MB_ICONINFORMATION);
}
else
{
MessageBox(L"Not Logged On", L"Information", MB_OK | MB_ICONINFORMATION);
}
}
return FALSE;
}
これをデバッグすると、私たちが推測しようとするよりむしろその方が簡単になります。クイックフィックスの問題ではありませんが、コードのほうが多くなります。 – DumbCoder
実際には、デバッグモードで実行していますが、これはlogon()呼び出しの直後に発生するため、この問題の原因を理解できません。デバッグモードでアプリケーションを実行すると、コード内でどこに発生するのかを確認できますが、このエラーの原因を理解できません。 – MrMan