Outils pour utilisateurs

Outils du site


probleme:visualstudio

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 <PreferredToolArchitecture>x64</PreferredToolArchitecture> en dessous de chaque <PlatformToolset>vXXX</PlatformToolset> dans le fichier de projet .vcxproj.

Use 64 bit compiler in Visual Studio 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

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).

probleme/visualstudio.txt · Dernière modification : de root