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 :

[C++ 2005] Erreur C3699


Sujet :

C++/CLI

  1. #1
    Membre confirmé
    Inscrit en
    Août 2004
    Messages
    556
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 556
    Points : 588
    Points
    588
    Par défaut [C++ 2005] Erreur C3699
    bjr,

    sur ce code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    sing namespace System;
    int main() {
       String * s;   // C3699
    }
    j'obtiens l'erreur C3699 : '*' : cannot use this indirection on type 'String'

    ce qui m'ennui c'est que j'ai envie d'utiliser * et pas ^ car j'ai récupérer un code source complètement écris de cette façon et j'ai pas envie de m'amuser à tout refaire parce que mon compilateur veut comme ca.

    c'est possible?

    mon compilateur est VS 2005 Pro

    merci d'avance

  2. #2
    Membre éprouvé
    Avatar de Gabrielly
    Inscrit en
    Juin 2004
    Messages
    722
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 722
    Points : 1 128
    Points
    1 128
    Par défaut
    Bizarre.

    Montre le code source complet depuis les includes.
    et donne le message complet du compilo

  3. #3
    Membre éprouvé
    Avatar de Gabrielly
    Inscrit en
    Juin 2004
    Messages
    722
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 722
    Points : 1 128
    Points
    1 128
    Par défaut
    Est-ce un projet managé ou natif que tu as généré :

  4. #4
    Membre confirmé
    Inscrit en
    Août 2004
    Messages
    556
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 556
    Points : 588
    Points
    588
    Par défaut
    voici le code source:
    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
     
    // Loader.cpp : main project file.
     
    #using <mscorlib.dll>
    #using <System.dll>
    #include <vcclr.h>
    #include <stdio.h>
    #include <tchar.h>
     
    using namespace System;
    using namespace System::Reflection;
     
    int main(array<System::String ^> ^args)
    {
        try {
          // Load library dynamically:
          Assembly* a = Assembly::Load("CPlugin");
          if (a) {
             Console::WriteLine("Assembly = {0}", a);
             Type* t = a->GetType("MyLib.MyClass");
             if (t) {
                Console::WriteLine("Type     = {0}", t);
                MethodInfo* m = t->GetMethod("SayHello");
                if (m) {
                   Console::WriteLine("Method   = {0}\n", m);
                   String* args[] = {"Test2"};
                   m->Invoke(NULL, args);
                } else {
                   printf("Can't find SayHello!\n");
                }
             } else {
                printf("Can't find MyLib.MyClass!\n");
             }
          } else {
             printf("Can't load MyLib!\n");
          }
       } catch (Exception* e) {
          Console::WriteLine("*** Oops: Exception occurred: {0}", e);
       }
        return 0;
    }
    code repris tel quel sur le msdn:

    lien

    je compile en tant que projet CLR

    j'ai des erreurs à chaque fois que j'ai un '*' après un objet managé

  5. #5
    Membre éprouvé
    Avatar de Gabrielly
    Inscrit en
    Juin 2004
    Messages
    722
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 722
    Points : 1 128
    Points
    1 128
    Par défaut
    Je crois que tu devrais mettre '^' au lieu de '*' parce que ces objets sont automatiquement libérés à la fin de programme par le GC.
    Si ce n'est que ces quelques lignes ce n'est pas pas couteux de faire un simple remplacement. Et d'ailleurs en utilisant des '*' tu ne libères pas explicitement les objets dans le code.

    AU fait le code que tu as pris dans l'MSDN, tu as dû donc créer un projet Console Managed?
    Et le compilo dit exactement quoi?

  6. #6
    Membre confirmé
    Inscrit en
    Août 2004
    Messages
    556
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 556
    Points : 588
    Points
    588
    Par défaut
    J'ai mis le code ci-dessus à titre d'exemple, j'ai bien une classe qui a été complètement écrite comme ça et impossible de le faire fonctionner.
    convertir 2000 lignes c't'un peu lourd :s

    voui c'est une Console Managed

    l'erreur exact est:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    1>.\test.cpp(9) : error C3699: '*' : cannot use this indirection on type 'System::String'
    1>        compiler replacing '*' with '^' to continue parsing
    merci encore de ton aide !

  7. #7
    Expert éminent sénior

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 750
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 750
    Points : 10 667
    Points
    10 667
    Billets dans le blog
    3
    Par défaut
    System::String est un type .Net, tu fais du C++ CLI et pas du C++ "normal" natif. Les pointeurs sur types .Net sont déclarés avec un "chapeau" ^ au lieu de *.
    Le code que tu as repris de la msdn, c'est du Managed C++, l'ancienne syntaxe avant l'apparition du C++ CLI.

Discussions similaires

  1. [Visual Studio 2005] Erreur de compli
    Par Nico28 dans le forum Visual C++
    Réponses: 8
    Dernier message: 11/12/2012, 12h37
  2. [VB.net 2005] Erreur de connexion à Access
    Par PoZZyX dans le forum Windows Forms
    Réponses: 4
    Dernier message: 08/09/2006, 12h01
  3. [VB.NET 2005] Erreur lors d'un envois de mail
    Par mimil77210 dans le forum Windows Forms
    Réponses: 3
    Dernier message: 08/06/2006, 14h00
  4. Visual Studio 2005 : erreur C2668
    Par Patriarch24 dans le forum MFC
    Réponses: 2
    Dernier message: 26/04/2006, 17h34
  5. Delphi 2005 : Erreur de compilation du programme
    Par bigbestboy dans le forum Langage
    Réponses: 6
    Dernier message: 03/08/2005, 18h14

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