Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente |
probleme:liaison:mingw_vs [2017/07/01 19:31] – Ajout de "Lier des dlls MinGW avec Visual Studio" root | probleme:liaison:mingw_vs [2019/10/30 16:02] (Version actuelle) – mhtml -> html root |
---|
| |
=====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 …===== |
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'' |
* ''%%___%%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===== | =====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. Deux articles couvrent bien le sujet. | 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]], {{ :probleme:liaison:mingw_vs:linking_msvc_libraries_with_mingw_projects_out_of_hanwell.htm.maff |Archive}} | [[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]], {{ :probleme:liaison:mingw_vs:msvc_and_mingw_dlls_mingw.htm.maff |Archive}} | [[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}} |