Bonjour,
Je suis nouveau sur ce forum, c'est mon premier post. Je pense qu'il s'agit avant tout d'un manque de connaissance des mécanismes de linkage. Je ne suis pas certain d'être dans la bonne section. Aussi, si je me suis perdu, dites le moi, je me déplacerai
ALors voila, j'ai un problème d'édition de lien à la compilation d'un projet Visual Studio 2010 qui utilise GSL 1.8 sur Windows 7 64 bits (edi, lib et platform immuables en raisons de contraintes externes).
J'ai googlé, cherché dans les différents forum, lu la doc officielle, les différents howto que l'on peut trouver, impasse. Au. se. cours.
extrait de l'erreur (même erreur pour autres symbol) :
[...] error LNK2019: unresolved external symbol gsl_odeiv_step_free referenced in function "public: class std::vector<double,class std::allocator<double> > __cdecl [...]
Contexte :
Le projet Visual est généré via CMake, en utilisant un FindGSL.cmake non-officiel que l'on peut facilement googler. J'ai bien l'impression qu'il fonctionne bien (pas d'erreur, et fichiers .lib déterminés).
J'ai généré ces ".lib" à partir des fichiers sources officiels de GSL 1.8 (Release et Static Lib).
J'ai récupéré les fichiers de développeurs, qui sont le suivants :
- libgsl.a
- libgsl.def
- libgsl.dll.a
Ce même projet tourne impeccablement sous Linux (GSL dans un environnement UNIX, rien de bien étonnant).
piste
Je pense que je fais une mauvaise utilisation de ces derniers fichiers.
Je me doute du rôle du .def, à partir du moment ou tous les symbols externes non résolus sont définies en commençant par "GSL_EXPORT ma fonc", et que ce fichier en contiens les exports, nécessaire aux compilateurs non GNU. Cependant, je ne sais pas où se trouve sa place.. Quand aux ".a", il me semble que c'est équivalent d'utiliser les .a ou .lib, s'ils sont compatibles (d'ailleurs, je tombe exactement sur les mêmes erreurs).
Je ne sais pas comment me servir du fichier ".def". J'ai essayé de le passer au /DEF (fichier de definition de module). Je suis à cours d'idée. HELP.
Partager