Outils pour utilisateurs

Outils du site


probleme:liaison:mingw_vs

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
probleme:liaison:mingw_vs [2016/11/18 12:02] – ↷ Liens modifiés en raison d'un déplacement. 69.30.213.82probleme:liaison:mingw_vs [2019/10/30 16:02] (Version actuelle) – mhtml -> html root
Ligne 4: Ligne 4:
  
 =====unresolved external symbol _libintl_printf referenced in function …===== =====unresolved external symbol _libintl_printf referenced in function …=====
-Dans ce cas, il s'agit d'une __erreur dans l'entête__ ''libintl.h'' et qui a été [[https://github.com/Alexpux/MINGW-packages/commit/b78ab10709fcda1c4220a4b2fbc7607293238656|corrigé depuis]] {{probleme:liaison:mingw_vs:gettext.htm.maff|Archive}}. Cette modification permet à Visual Studio de considérer la fonction ''libintl_printf'' comme étant celle native du système ''%%__printf__%%''. La question peut se poser pour savoir si cette situation était volontaire afin de forcer VS à utiliser une autre fonction que celle de base mais je ne suis pas parvenu à trouver un fichier ''.a'' qui contenait sa définition.+Dans ce cas, il s'agit d'une __erreur dans l'entête__ ''libintl.h'' et qui a été corrigé depuis [[https://github.com/Alexpux/MINGW-packages/commit/b78ab10709fcda1c4220a4b2fbc7607293238656|gettext_ make libintl.h compatible with Visual Studio. · Alexpux_MINGW-packages@b78ab10 · GitHub]] {{ :probleme:liaison:mingw_vs:gettext_make_libintl.h_compatible_with_visual_studio._msys2_mingw-packages_b78ab10_github_2019-10-30_15_54_16_.html |Archive du 15/06/2019 le 30/10/2019}}. Cette modification permet à Visual Studio de considérer la fonction ''libintl_printf'' comme étant celle native du système ''%%__printf__%%''. La question peut se poser pour savoir si cette situation était volontaire afin de forcer VS à utiliser une autre fonction que celle de base mais je ne suis pas parvenu à trouver un fichier ''.a'' qui contenait sa définition.
  
 =====unresolved external symbol __imp___iob referenced in function …===== =====unresolved external symbol __imp___iob referenced in function …=====
Ligne 23: Ligne 23:
 Ensuite, il est nécessaire d'extraire tous les symboles de l'ensemble des fichiers ''.a''. Pour cela la commande ''nm'' devra être exécuté dans chaque dossier : ''nm -s %%--%%defined-only *.a > list.txt''. Ensuite, il est nécessaire d'extraire tous les symboles de l'ensemble des fichiers ''.a''. Pour cela la commande ''nm'' devra être exécuté dans chaque dossier : ''nm -s %%--%%defined-only *.a > list.txt''.
  
-Pour résoudre la dépendance %%__imp___iob%% il convient de trouver toutes les occurrences dans les symboles des fichiers ''.a''. Les solutions sont dans+Pour résoudre la dépendance ''%%__imp___iob%%'' il convient de trouver toutes les occurrences dans les symboles des fichiers ''.a''. Les solutions sont dans
  
   * ''C:\msys64\mingw64\x86_64-w64-mingw32\lib\libcrtdll.a''   * ''C:\msys64\mingw64\x86_64-w64-mingw32\lib\libcrtdll.a''
Ligne 44: Ligne 44:
   * ''%%___%%mingw_raise_matherr'' sera trouvé dans ''C:\msys64\mingw32\i686-w64-mingw32\lib\libmingw32.a'' mais un nouveau message d'erreur apparait : ''_atexit already defined in libmingw32.a(lib32_libmingw32_a-atonexit.o)'' dans le fichier ''MSVCRTD.lib(utility.obj)''   * ''%%___%%mingw_raise_matherr'' sera trouvé dans ''C:\msys64\mingw32\i686-w64-mingw32\lib\libmingw32.a'' mais un nouveau message d'erreur apparait : ''_atexit already defined in libmingw32.a(lib32_libmingw32_a-atonexit.o)'' dans le fichier ''MSVCRTD.lib(utility.obj)''
  
-Pour résoudre ce dernier point, pas moyen de faire les choses proprement. Appliquer la méthode [[https://msdn.microsoft.com/query/dev14.query?appId=Dev14IDEF1&l=EN-US&k=k%28LNK2005%29&rd=true|LNK2005]] {{probleme:liaison:mingw_vs:linker_tools_error_lnk2005.htm.maff|Archive}} en ajoutant au lieur l'option ''/FORCE:MULTIPLE''. C'est sale, il faut impérativement réaliser des tests pour s'assurer que le lieur n'a pas fait n'importe quoi mais félicitation, vous avez votre librairie.+Pour résoudre ce dernier point, pas moyen de faire les choses proprement. Appliquer la méthode [[https://msdn.microsoft.com/query/dev14.query?appId=Dev14IDEF1&l=EN-US&k=k%28LNK2005%29&rd=true|Linker Tools Error LNK2005]] {{ :probleme:liaison:mingw_vs:linker_tools_error_lnk2005_microsoft_docs_2019-10-30_15_55_25_.html |Archive le 11/04/2016 le 30/10/2019}} en ajoutant au lieur l'option ''/FORCE:MULTIPLE''. C'est sale, il faut impérativement réaliser des tests pour s'assurer que le lieur n'a pas fait n'importe quoi mais félicitation, vous avez votre librairie. 
 + 
 +=====Lier des dlls MinGW avec Visual Studio===== 
 +Cela ne peut être fait directement car la façon dont le lieur de gcc et de Microsoft converti le nom de fonction en symbole est différent ([[lang:cpp:lieur|mangling]]). Deux articles couvrent bien le sujet. 
 + 
 +[[https://outofhanwell.wordpress.com/2006/05/01/linking-msvc-libraries-with-mingw-projects/|Linking MSVC Libraries with MinGW Projects _ Out of Hanwell]] {{ :probleme:liaison:mingw_vs:linking_msvc_libraries_with_mingw_projects_out_of_hanwell_2019-10-30_15_55_33_.html |Archive du 01/05/2006 le 30/10/2019}} 
 + 
 +[[http://www.mingw.org/wiki/msvc_and_mingw_dlls|MSVC and MinGW DLLs _ MinGW]] {{ :probleme:liaison:mingw_vs:msvc_and_mingw_dlls_mingw_2019-10-30_15_55_39_.html |Archive du 26/02/2009 le 30/10/2019}}
probleme/liaison/mingw_vs.1479466970.txt.gz · Dernière modification : 2016/11/18 12:02 de 69.30.213.82