2016-01-28 5 views
1

Je veux que le SCIP callable puisse imprimer tous les messages dans stderr (en l'utilisant comme solveur flatzinc). J'ai essayéSCIP 3.2.0 ne remplace pas le gestionnaire de messages

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

sans effet ...

Répondre

1

Essayez ALSE faire SCIP au courant de votre gestionnaire de messages:

SCIP_CALL(SCIPsetMessagehdlr(scip, pHndl)); 

Cela fera SCIP également capturer votre gestionnaire de messages, donc si vous n'en avez plus besoin, vous pouvez le libérer:

SCIP_CALL(SCIPmessagehdlrRelease(&pHndl)); 

Ceci n'écrase pas la poignée Pour les messages d'erreur, ceux-ci doivent être imprimés si aucun SCIP n'est encore disponible. Vous pouvez définir un gestionnaire pour celui-ci via SCIPmessageSetErrorPrinting(). Mais ils vont déjà à stderr.

+0

Il serait utile d'ajouter cela à la description de SCIPmessagehdlrCreate car maintenant il dit seulement qu'il capture également la poignée créée – glebB