IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++/CLI Discussion :

Migration VS.NET2003 -> VSPro2008 et erreur /clr option


Sujet :

C++/CLI

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 6
    Points : 5
    Points
    5
    Par défaut Migration VS.NET2003 -> VSPro2008 et erreur /clr option
    Bonjour à tou(te)s,

    On m'a confié un projet développé sous Visual Studio .NET 2003, à reprendre en utilisant Visual Studio 2008 (Professional Edition).

    A la compilation du projet, on obitent l'erreur suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cl : Command line error D8045 : cannot compile C file '.\Include\PC_Components\xml\xmlfind.c' with the /clr option
    Si j'essaie d'inhiber l'option /CLR de la compilation depuis le champs "Common Language Runtime Support" (dsl je suis en Anglais) de l'onglet General des propriétés de configuration du projet, j'obtiens tout un tas d'erreur, ce qui semble indiquer que le projet necessite bien le Management de code.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    c:\PROJET\Form1.h(1708) : error C2653: 'System' : is not a class or namespace name
    c:\PROJET\Form1.h(1708) : error C2065: 'String' : undeclared identifier
    c:\PROJET\Form1.h(1708) : error C2065: 'Text' : undeclared identifier
    c:\PROJET\Form1.h(1708) : error C2653: 'System' : is not a class or namespace name
    c:\PROJET\Form1.h(1708) : error C2061: syntax error : identifier 'String'
    c:\PROJET\Form1.h(1709) : error C2653: 'System' : is not a class or namespace name
    c:\PROJET\Form1.h(1709) : error C2065: 'String' : undeclared identifier
    c:\PROJET\Form1.h(1709) : error C2065: 'Caption' : undeclared identifier
    c:\PROJET\Form1.h(1709) : error C2653: 'System' : is not a class or namespace name
    c:\PROJET\Form1.h(1709) : error C2061: syntax error : identifier 'String'
    c:\PROJET\Form1.h(1711) : error C2653: 'System' : is not a class or namespace name
    c:\PROJET\Form1.h(1711) : error C2065: 'Text' : undeclared identifier
    c:\PROJET\Form1.h(1711) : error C2065: 'Caption' : undeclared identifier
    c:\PROJET\Form1.h(1711) : error C3861: 'Show': identifier not found
    c:\PROJET\Form1.h(1716) : error C2653: 'System' : is not a class or namespace name
    c:\PROJET\Form1.h(1716) : error C2065: 'String' : undeclared identifier
    c:\PROJET\Form1.h(1716) : error C2065: 'Text' : undeclared identifier
    c:\PROJET\Form1.h(1716) : error C2062: type 'int' unexpected
    c:\PROJET\Form1.h(1717) : error C2143: syntax error : missing ';' before '{'
    c:\PROJET\Form1.h(1717) : error C2447: '{' : missing function header (old-style formal list?)
    c:\PROJET\Form1.h(1762) : error C2871: 'System' : a namespace with this name does not exist
    c:\PROJET\Form1.h(1763) : error C2653: 'System' : is not a class or namespace name
    c:\PROJET\Form1.h(1763) : error C2871: 'ComponentModel' : a namespace with this name does not exist
    c:\PROJET\Form1.h(1764) : error C2653: 'System' : is not a class or namespace name
    c:\PROJET\Form1.h(1764) : error C2871: 'Collections' : a namespace with this name does not exist
    c:\PROJET\Form1.h(1765) : error C2653: 'System' : is not a class or namespace name
    c:\PROJET\Form1.h(1765) : error C2871: 'Forms' : a namespace with this name does not exist
    c:\PROJET\Form1.h(1766) : error C2653: 'System' : is not a class or namespace name
    c:\PROJET\Form1.h(1766) : error C2871: 'Data' : a namespace with this name does not exist
    c:\PROJET\Form1.h(1767) : error C2653: 'System' : is not a class or namespace name
    c:\PROJET\Form1.h(1767) : error C2871: 'Drawing' : a namespace with this name does not exist
    c:\PROJET\Form1.h(1778) : error C4980: '__gc' : use of this keyword requires /clr:oldSyntax command line option
    c:\PROJET\Form1.h(1778) : error C3630: error when processing the token '__gc'
    c:\PROJET\Form1.h(1778) : fatal error C1190: managed targeted code requires a '/clr' option
    AssemblyInfo.cpp
    .\AssemblyInfo.cpp(3) : error C2653: 'System' : is not a class or namespace name
    .\AssemblyInfo.cpp(3) : error C2871: 'Reflection' : a namespace with this name does not exist
    .\AssemblyInfo.cpp(4) : error C2653: 'System' : is not a class or namespace name
    .\AssemblyInfo.cpp(4) : error C2871: 'CompilerServices' : a namespace with this name does not exist
    .\AssemblyInfo.cpp(11) : error C2337: 'AssemblyTitleAttribute' : attribute not found
    .\AssemblyInfo.cpp(12) : error C2337: 'AssemblyDescriptionAttribute' : attribute not found
    .\AssemblyInfo.cpp(13) : error C2337: 'AssemblyConfigurationAttribute' : attribute not found
    .\AssemblyInfo.cpp(14) : error C2337: 'AssemblyCompanyAttribute' : attribute not found
    .\AssemblyInfo.cpp(15) : error C2337: 'AssemblyProductAttribute' : attribute not found
    .\AssemblyInfo.cpp(16) : error C2337: 'AssemblyCopyrightAttribute' : attribute not found
    .\AssemblyInfo.cpp(17) : error C2337: 'AssemblyTrademarkAttribute' : attribute not found
    .\AssemblyInfo.cpp(18) : error C2337: 'AssemblyCultureAttribute' : attribute not found
    .\AssemblyInfo.cpp(31) : error C2337: 'AssemblyVersionAttribute' : attribute not found
    .\AssemblyInfo.cpp(55) : error C2337: 'AssemblyDelaySignAttribute' : attribute not found
    .\AssemblyInfo.cpp(56) : error C2337: 'AssemblyKeyFileAttribute' : attribute not found
    .\AssemblyInfo.cpp(57) : error C2337: 'AssemblyKeyNameAttribute' : attribute not found
    J'ai lu qu'on pouvait inhiber l'action de l'option /CLR à la compilation pour des fonctions particulières, en utilisant un #pragma unmanaged .
    J'ai essayé de l'insérer en début de fichier xmlfind.c mais il m'indique encore la même erreur...

    Pour dire vrai, je ne connais pas grand chose à la notion de "Code Management"...
    J'ai noté également une conversion de fichiers (*.sln, *.vcproj et c'est tout a priori) nécessaire pour migrer en Visual2008, si par hasard il y aurait un lien...
    Quelqu'un aurait-il une piste, ou des conseils ??

    Merci d'avance

  2. #2
    Membre émérite Avatar de Guulh
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    2 160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 2 160
    Points : 2 925
    Points
    2 925
    Par défaut
    Je peux au moins te confirmer que vu le message d'erreur, le code que tu dois convertir utilise le framework (System, String, Text, Caption sont des namespaces et des classes du framework).

    Du peu que je sais du mixed mode (natif + clr), on peut en effet affiner le comportement du compilo avec des #pragma unmanaged. La FAQ C++/CLI de ce site apporte quelques éléments de réponse, tu devrais jeter un chtit coup d'œil si c'est pas déjà fait
    ಠ_ಠ

  3. #3
    Membre émérite Avatar de Guulh
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    2 160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 2 160
    Points : 2 925
    Points
    2 925
    Par défaut
    J'y pense ! Ton projet vient de Visual 2003 ? En framework 1.1, le langage C++ était du "managed c++", tout moche, avec des __gcnew. Il a été remplacé avec Visual 2005 et le framework 2 par le C++/CLI, qui a une syntaxe plus esthétique (entre autres qualités, mais je n'ai pas approfondi).

    Tout ça pour dire que tu dois changer une option de compilation à "oldsyntax". je ne sais plus laquelle, mais ça devrait te suffire
    ಠ_ಠ

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 6
    Points : 5
    Points
    5
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Tout ça pour dire que tu dois changer une option de compilation à "oldsyntax"
    J'ai essayé l'option du compilo "Common Language Runtime, Old Syntax (/clr:oldSyntax)" mais l'erreur reste la même.


    En framework 1.1, le langage C++ était du "managed c++" ... Il a été remplacé avec Visual 2005 et le framework 2
    Ok, donc cela viendrait plutot de la version du Framework... hélas, dans "Common properties", j'ai 3 choix possibles de "Targeted Framework": .NET Framework 2.0 (par défaut), 3.0 ou 3.5. Il faudrait qu'il me propose le 1.0 c'est bien cela ?

    Il doit bien y avoir moyen de charger le Framework de notre choix, ou de le personnaliser, si ces outils sont bien foutus non ?

    Peut être qu'il y a possibilité de le convertir en Framework 2.0 à l'aide d'un Visual 2005 puis de travailler avec 2008? J'imagine mal qu'on ai pas pu récupérer un travail de 2003 en 2005, sur lequel on aurait continuer de travailler et se retrouver bloquer une fois la version suivante (2008) sortie, non ?

    Merci pour les pistes en tout cas !

  5. #5
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Points : 16 075
    Points
    16 075
    Par défaut
    tu peux surtout définir unitairement quels fichiers tu veux compiler avec l'option /clr
    tu as surement certains fichiers entierement natif qui n'ont pas besoin de cette option

  6. #6
    Rédacteur
    Avatar de SaumonAgile
    Homme Profil pro
    Team leader
    Inscrit en
    Avril 2007
    Messages
    4 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Team leader
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 4 028
    Points : 6 334
    Points
    6 334
    Par défaut
    Seul VS.NET (2003) permet de compiler un projet pour le framework 1.1
    Toute tentative de compilation en utilisant un VS 2005 ou 2008 passera par la conversion du projet.
    Besoin d'un MessageBox amélioré ? InformationBox pour .NET 1.1, 2.0, 3.0, 3.5, 4.0 sous license Apache 2.0.

    Bonnes pratiques pour les accès aux données
    Débogage efficace en .NET
    LINQ to Objects : l'envers du décor

    Mon profil LinkedIn - MCT - MCPD WinForms - MCTS Applications Distribuées - MCTS WCF - MCTS WCF 4.0 - MCTS SQL Server 2008, Database Development - Mon blog - Twitter

  7. #7
    Membre émérite Avatar de Guulh
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    2 160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 2 160
    Points : 2 925
    Points
    2 925
    Par défaut
    Citation Envoyé par mig73 Voir le message
    Ok, donc cela viendrait plutot de la version du Framework... hélas, dans "Common properties", j'ai 3 choix possibles de "Targeted Framework": .NET Framework 2.0 (par défaut), 3.0 ou 3.5. Il faudrait qu'il me propose le 1.0 c'est bien cela ?
    Non, cela ne vient pas de la version du framework. Nico-pyright en sait bien plus que moi sur le sujet, mais ce que j'ai compris, c'est qu'il existe deux syntaxes différentes pour le C++ managé : la moche et le CLI. La moche (nommée Managed C++) était la seul disponible avec visual 2003, mais elle est toujours compilable par les versions ultérieures de Visual via l'option oldsyntax.

    Il est donc il me semble tout à fait possible d'utiliser les frameworks récents avec l'ancienne syntaxe.
    ಠ_ಠ

Discussions similaires

  1. Réponses: 0
    Dernier message: 21/04/2011, 12h04
  2. Erreur /clr en Release et non en Debug
    Par Myzha dans le forum C++/CLI
    Réponses: 1
    Dernier message: 18/06/2010, 17h15
  3. Migration de données via Procédures stockées, erreur timeout
    Par Arnard dans le forum Accès aux données
    Réponses: 6
    Dernier message: 01/10/2009, 13h17
  4. Erreur CLR 80004005
    Par kineton dans le forum C#
    Réponses: 5
    Dernier message: 18/03/2009, 13h40
  5. Migration vers VS 2008 : message d'erreur à l'éxécution
    Par troubleshooting dans le forum Général Dotnet
    Réponses: 0
    Dernier message: 29/07/2008, 13h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo