Déjà bonjour à tous, en général j'essaye de ne pas raconter mes problèmes et de chercher mais là je n'ai pas réussi à trouver la solution à mon problème. Je m'en remet donc à vous.

Bon alors pour la petite histoire je travaille sur un simulateur de robots en c++ et j'ai besoin de faire une optimisation des forces de contacts. Pour cela mon boss m'a dit d'utiliser fmincon (qui a l'air de moins faire chier avec des contraintes que les autres fonctions d'optimisation que j'aie trouvé en c++).

Donc voila où ça commence à poser problème. Comment utiliser une fonction matlab en c++ ? Ma recherche m'a menée au compiler matlab et j'ai donc fait
Code : Sélectionner tout - Visualiser dans une fenêtre à part
mcc -vW cpplib:optimisation optimisation
pour generer des fichiers optimisation.cpp et optimisation.h (j'en mettrai le code plus tard si ca vous interresse mais je ne pense pas que mon probleme soit lié à mon code de 10 lignes).

Bref dans optimisation.cpp je trouve :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
void MW_CALL_CONV optimisation(int nargout, mwArray& X, const mwArray& J
                               , const mwArray& Vl, const mwArray& X0
                               , const mwArray& Mu, const mwArray& nbcontacts)
Je me dit donc que c'est ma fonction. Je rajoute donc un :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
#include "optimisation.h"
#include "mclcppclass.h"
au début de mon main (qui s'appelle dynamique.cpp) et tente un appel à optimisation() avec :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
	// Output
	mwArray X;
 
	// Inputs
	mwArray J(3*_totalNumberContacts, 3*_totalNumberContacts, mxDOUBLE_CLASS);
	mwArray Vl;
	mwArray X0;
	mwArray Mu;
	mwArray nbcontacts;
 
	optimisation(1, X, J, Vl, X0, Mu, nbcontacts);
ce qui me génère une erreur par ligne :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
1>Dynamique.obj : error LNK2019: unresolved external symbol _mclcppCreateError referenced in function "public: __thiscall mwException::mwException(void)" (??0mwException@@QAE@XZ)
1>Dynamique.obj : error LNK2019: unresolved external symbol _ref_count_obj_addref referenced in function "public: __thiscall mwException::mwException(class error_info *,bool)" (??0mwException@@QAE@PAVerror_info@@_N@Z)
1>Dynamique.obj : error LNK2019: unresolved external symbol _ref_count_obj_release referenced in function "public: virtual __thiscall mwException::~mwException(void)" (??1mwException@@UAE@XZ)
1>Dynamique.obj : error LNK2019: unresolved external symbol _error_info_get_message referenced in function "public: virtual char const * __thiscall mwException::what(void)const " (?what@mwException@@UBEPBDXZ)
1>Dynamique.obj : error LNK2019: unresolved external symbol _mclcppGetLastError referenced in function "public: static void __cdecl mwException::raise_error(void)" (?raise_error@mwException@@SAXXZ)
1>Dynamique.obj : error LNK2019: unresolved external symbol _mclGetEmptyArray referenced in function "public: void __thiscall Dynamique::test(void)" (?test@Dynamique@@QAEXXZ)
1>Dynamique.obj : error LNK2019: unresolved external symbol _mclGetMatrix referenced in function "public: void __thiscall Dynamique::test(void)" (?test@Dynamique@@QAEXXZ)
1>Dynamique.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) void __cdecl optimisation(int,class mwArray &,class mwArray const &,class mwArray const &,class mwArray const &,class mwArray const &,class mwArray const &)" (__imp_?optimisation@@YAXHAAVmwArray@@ABV1@1111@Z) referenced in function "public: void __thiscall Dynamique::test(void)" (?test@Dynamique@@QAEXXZ)
1>Release/HRP2.exe : fatal error LNK1120: 8 unresolved externals
Donc voila je ne comprend pas... J'ai pourtant bien ajouté "C:\Program Files\MATLAB\R2007a\extern\include" dans le path des librairies... Mais il doit y avoir un truc en plus à faire...

Ah oui et je suis sous windows (on ne m'a pas laissé le choix...) avec Visual Studio et Matlab v7.4.0.287.

Voila j'espère que vous pourrez m'aider à me sortir de mon problème, dans tous les cas merci de m'avoir lu jusqu'au bout