我是quickfix的新手。
我创建了一个通常与服务器连接的客户端。在我的fromApp()函数中,我可以使用简单的std :: cout<<打印消息。消息<<的std :: ENDL;并且消息的所有字段都在那里,它们也存在于日志文件中。当我尝试调用crack()时,它会抛出Field not found异常。查看日志文件,我看到异常被抛出,因为quickfix找不到字段35.任何人都知道这件事吗?
EDIT1:
void fromApp( const FIX::Message& message,
const FIX::SessionID& sessionID )
throw( FIX::FieldNotFound, FIX::IncorrectDataFormat, FIX::IncorrectTagValue, FIX::UnsupportedMessageType )
{
std::cout << "FromApp" << std::endl;
std::cout << message << std::endl;
try
{
crack( message, sessionID );
}
catch(std::exception& ex)
{
std::cout << "crack exception: " << ex.what() << std::endl;
}
}
void onMessage( const FIX44::MarketDataIncrementalRefresh& message, const FIX::SessionID& sessionID )
{
std::cout << "OnMessage" << std::endl;
}
void fromApp( const FIX::Message& message,
const FIX::SessionID& sessionID )
throw( FIX::FieldNotFound, FIX::IncorrectDataFormat, FIX::IncorrectTagValue, FIX::UnsupportedMessageType )
{
std::cout << "FromApp" << std::endl;
std::cout << message << std::endl;
try
{
crack( message, sessionID );
}
catch(std::exception& ex)
{
std::cout << "crack exception: " << ex.what() << std::endl;
}
}
void onMessage( const FIX44::MarketDataIncrementalRefresh& message, const FIX::SessionID& sessionID )
{
std::cout << "OnMessage" << std::endl;
}
在终端窗口中,我得到以下输出:
在message.current.log上我得到:
FromApp
8=FIX.4.49=12335=W34=7249=servidor52=20150123-13:34:56.95756=cliente22=448=CERB001D55=CERB001D268=1269=0270=100271=1000290=110=239
crack exception: Field not found
EDIT2:
当我将crack()函数放在try-catch块之外时,在message.event.log中我得到:
20150123-13:29:03.618 : 8=FIX.4.49=7035=A34=149=cliente52=20150123-13:29:03.61856=servidor98=0108=2010=077
20150123-13:29:03.655 : 8=FIX.4.49=7035=A34=149=servidor52=20150123-13:29:03.65856=cliente98=0108=2010=081
20150123-13:29:06.629 : 8=FIX.4.49=12235=W34=249=servidor52=20150123-13:29:06.63556=cliente22=448=CERB001D55=CERB001D268=1269=0270=100271=1000290=110=175
提前谢谢。
答案 0 :(得分:0)
我终于找到了问题的根源。
我从源代码安装了quickfix,似乎在较新版本的quickfix(1.14.0和最新版本)中,DataDictionaryProvadider.h中的某些内容与共享指针有关,而且似乎是导致问题的原因。当我从apt-get安装quickfix时,我得到了版本1.13.3,一切正常。
感谢所有试图提供帮助的人。