我希望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) );
没有效果......
答案 0 :(得分:1)
尝试让SCIP了解您的消息处理程序:
SCIP_CALL( SCIPsetMessagehdlr(scip, pHndl) );
这将使SCIP也捕获你的消息处理程序,所以如果你不再需要它,你可以释放它:
SCIP_CALL( SCIPmessagehdlrRelease(&pHndl) );
这不会覆盖错误消息的处理程序,因为当没有SCIP时,可能必须打印这些消息。您可以通过SCIPmessageSetErrorPrinting()为此设置处理程序。但他们已经去了斯特德尔。