SCIP 3.2.0不替换消息处理程序

时间:2016-01-28 03:40:14

标签: scip output-redirect message-handlers

我希望SCIP callable将所有消息打印到stderr(将其用作flatzinc解算器)。我试过了

SCIP_DECL_MESSAGEWARNING(printMsg) {
  cerr << msg << flush;
}
...
      SCIP_MESSAGEHDLR* pHndl=0;
      SCIP_CALL ( SCIPmessagehdlrCreate ( &pHndl, FALSE, NULL, FALSE, printMsg, printMsg, printMsg, NULL, NULL) );

没有效果......

1 个答案:

答案 0 :(得分:1)

尝试让SCIP了解您的消息处理程序:

  SCIP_CALL( SCIPsetMessagehdlr(scip, pHndl) );

这将使SCIP也捕获你的消息处理程序,所以如果你不再需要它,你可以释放它:

  SCIP_CALL( SCIPmessagehdlrRelease(&pHndl) );

这不会覆盖错误消息的处理程序,因为当没有SCIP时,可能必须打印这些消息。您可以通过SCIPmessageSetErrorPrinting()为此设置处理程序。但他们已经去了斯特德尔。