=====Compilation===== ====fatal error C4596: 'XXXX': illegal qualified name in member declaration==== ou ''C4596 : 'XXXX' : nom qualifié non conforme dans une déclaration de membre'' Dans un fichier entête, il ne faut pas préfixer la déclaration de la fonction par le nom de la classe. class AAA { void AAA::fonction(); } Enlever le ''AAA::'' superflu. class AAA { void fonction(); } ====fatal error C1060: compiler is out of heap space==== ou ''C1060 : espace du tas insuffisant pour le compilateur'' Forcer l'utilisation du compilateur 64 bits. Ajouter ''x64'' en dessous de chaque ''vXXX'' dans le fichier de projet ''.vcxproj''. [[https://stackoverflow.com/questions/46683300/use-64-bit-compiler-in-visual-studio|Use 64 bit compiler in Visual Studio]] {{ :probleme:visualstudio:c_-_use_64_bit_compiler_in_visual_studio_-_stack_overflow_2019-06-06_09_38_21_.html |Archive du 06/06/2019}} Pour CMake, ajouter la ligne set(CMAKE_GENERATOR_TOOLSET, "host=x64") ====fatal error C1083: Cannot open compiler generated file: '': Invalid argument==== Un nom de fichier dépasse 256 caractères. [[https://github.com/facebookresearch/xformers/issues/365|fatal error C1083: Cannot open compiler generated file: '': Invalid argument]] {{ :probleme:visualstudio:fatal_error_c1083_cannot_open_compiler_generated_file_invalid_argument_issue_365_facebookresearch_xformers_08_09_2023_13_32_58_.html |Archive du 13/08/2022 le 08/09/2023}} =====Lieur===== ====Liaison de librairies DLL ayant une dépendance circulaire==== Prenons le cas de la librairie ''libprojet'' qui définit l'interface ''IParametres'' et une seconde ''libeurocode''. ''libeurocode'' implémente ''IParametres'' avec les normes EC et ''libprojet'' est liée à ''libeurocode'' pour l'utiliser de façon native (sans chargement dynamique). L'astuce consiste à compiler ''libeurocode'' en premier (choix arbitraire) mais sans demander à le lier (via l'éditeur de lien) avec la librairie ''libprojet''. La compilation (''.dll'') va échouer mais l'édition des liens (''.lib'') va réussir. Ensuite, il reste à compiler normalement ''libprojet'' en le liant à ''libeurocode'' et enfin à recompiler ''libeurocode'' en le liant cette fois avec ''libprojet''. Ainsi les 2 libraires sont bien générées. Afin d'avoir à éviter de modifier le projet à chaque compilation l'une librairie, il est conseillé de créer 3 projets pour générer les 2 librairies. Le premier pour ''libeurocode'' sans la liaison avec ''libprojet'', le deuxième pour ''libprojet'' avec la liaison avec ''libeurocode'' et enfin le troisième qui sera parfaitement identique au premier sauf que la liaison avec ''libprojet'' sera définie. ====error LNK2038: mismatch detected for 'ITERATOR_DEBUG_LEVEL': value 'X' doesn't match value 'Y' in AAA.lib(BBB.cpp.obj)==== Se produit quand on essaie de lier un programme compilé avec l'option Debug et une Dll avec l'option Release (ou inversement).