J'ai donc un problème de conversion
Qui pourrait être un problème de convention de nommage (mais pas sûr).

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
D:\workspace\otawa\src\lp_solve5\lp_solve5.cpp: In member function 'virtual bool otawa::lp_solve5::System::solve(otawa::WorkSpace*)':
D:\workspace\otawa\src\lp_solve5\lp_solve5.cpp:601:43: error: invalid conversion from 'int (*)(lprec*, void*)' to 'int (*)(lprec*, void*)'
D:\workspace\otawa\src\lp_solve5\lp_solve5.cpp:601:43: error:   initializing argument 2 of 'void put_abortfunc(lprec*, int (*)(lprec*, void*), void*)'
mingw32-make[2]: *** [src/lp_solve5/CMakeFiles/lp_solve5.dir/lp_solve5.cpp.obj] Error 1
mingw32-make[1]: *** [src/lp_solve5/CMakeFiles/lp_solve5.dir/all] Error 2
mingw32-make: *** [all] Error 2
En cherchant sur internet je suis tombé sur cette discussion qui ressemble beaucoup à mon problème (utilisation de minGW + messages d'erreur), mais j'ai du mal à comprendre la solution proposée.

Dans le .cpp
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
static int test_cancellation(lprec *lp, void *userhandle) {
	WorkSpace *ws = (WorkSpace *)userhandle;
	if(ws->isCancelled())
		return 1;
	else
		return 0;
}
 
if(ws)
	put_abortfunc(lp, test_cancellation, ws);
Dans le .h inclus
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
typedef int    (__WINAPI lphandle_intfunc)(lprec *lp, void *userhandle);
 
typedef void (__WINAPI put_abortfunc_func)(lprec *lp, lphandle_intfunc newctrlc, void *ctrlchandle);