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 :

managed/unmanaged code visual 6->visual 2005


Sujet :

C++/CLI

  1. #1
    Membre éclairé
    Inscrit en
    Mars 2006
    Messages
    274
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 274
    Par défaut managed/unmanaged code visual 6->visual 2005
    J'ai déja developpé une dll avec visual C++ 6.0 ou j'ai exporté des fonctions.
    et j'ai déja utilisé cette dll dans projet lui aussi ecrit avec visual C++ 6.0.

    J'ai voulu convertir ce projet vers visual 2005. j'ai rencontré des erreurs de link.
    J'ai voulu convertir dll, j'ai rencontré des erreurs de compilation.

    Ce que je demande c'est:

    1) est ce que le nouveau projet 2005 est du code managed ou unmanaged?
    2) est ce que les anciens types (par exemple "w_char") ne sont plus disponible?
    3) est ce que je doit developper un wrapper ou il y a une autre alternative?

  2. #2
    Expert confirmé
    Avatar de smyley
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    6 270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 6 270
    Par défaut
    tu as quelle "version" de VS 2005 ? ( j'entend par là, VC++ Express, Professional, etc ... )
    Si c'est une version Express, il te faudra télécharger le Platform SDK, sinon ... c pô

    Mais en tout cas il ne devrais y avoir aucune différence pour ton projet C++. Avec VC++ 2005 on peut choisir de faire un programme natif, mixé ( managé + natif ) ou entièrement managé donc normallement tu n'as pas à faire de wrapper ni quoique ce soit de ce genre pour créer une dll native.
    Cependant, pourrai tu poster ici le texte des erreurs que tu rencontres ?

  3. #3
    Membre éclairé
    Inscrit en
    Mars 2006
    Messages
    274
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 274
    Par défaut
    Exemple d'erreurs:
    Dans le fichier "ficher.h" du projet DLL, j'ai les fonctions suivantes:
    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
     
    //==============================================================================
    // FUNCTION: HashKey<KEY>
    // PURPOSE:  Default hash key generator.
    template<class KEY>
    inline UINT HashKey(const KEY& cKey)
    {
    	return ((UINT)(void*)(DWORD)cKey) >> 4;
    }
     
    //==============================================================================
    // FUNCTION: HashKey<LPCTSTR>
    // PURPOSE:  String hash key generator.
    template<> 
    inline UINT HashKey<LPCTSTR> (const LPCTSTR& tsKey)
    {
        LPCTSTR key = tsKey;
        if (key == NULL) return -1;
     
    	UINT nHash = 0;
    	while (*key)
    		nHash = (nHash<<5) + nHash + *key++;
    	return nHash;
    }
     
    //==============================================================================
    // FUNCTION: HashKey<COpcString>
    // PURPOSE:  String object hash key generator.
    template<> 
    inline UINT HashKey<COpcString> (const COpcString& cKey)
    {
        LPCTSTR key = cKey;
        if (key == NULL) return -1;
     
    	UINT nHash = 0;
    	while (*key)
    		nHash = (nHash<<5) + nHash + *key++;
    	return nHash;
    }
     
    bool RemoveKey(const KEY& cKey)
    {
            UINT uBin = HashKey(cKey)%m_uTableSize;
    }
    L'erreur est:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    error C2668: 'HashKey' : ambiguous call to overloaded function	c:\my folder\ficher.h	234
    Autre Question:
    est ce que je peux utliser les fonctions exportées de ma dll native dans un nouveau projet VC++ 2005(c'est la version team edition )
    comment je peux le faire? comment ajouter sa référence?
    En fait j'ai fait un nouveau projet et je voulais ajouter la référence de ma dll, j'obtient le message suivant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Could not add a reference to file MaDLL.dll because it neither a .NET assemply or registered Acivex control

  4. #4
    Expert confirmé
    Avatar de smyley
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    6 270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 6 270
    Par défaut
    Citation Envoyé par WELCOMSMAIL Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    error C2668: 'HashKey' : ambiguous call to overloaded function	c:\my folder\ficher.h	234
    heu ...
    Citation Envoyé par WELCOMSMAIL Voir le message
    dll native dans un nouveau projet VC++ 2005(c'est la version team edition )
    comment je peux le faire? comment ajouter sa référence?
    Là par conrtre je sais.
    - Soit tu fais tout en natif et tu compiles ta dll en natif et ton nouveau projet C++ en natif ce que veux dire qu'en créant ton projet tu dois choisir comme type de projet tous les projets saufs ceux présents dans la catégorie CLR. Pour utiliser ta dll tu devra donc te servir de libs ou passer par LoadLibrary/FreeLibrary
    - Soit tu fait ta dll en natif et ton projet C++ en mixe donc comme type de projet tu choisis un des types présents dans la catégorie "CLR" des nouveaux types de projets mais comme ta dll est en natif tu devra l'utiliser de la même manière que précédemment décris
    - Soit tu fais tout en managé et donc tu crées ton projet C++ dans un des types de projets "CLR" et tu changes les options de ta dll pour pouvoir la compiler en mode managé ( options du projet, "Common Language Runtime Support" mais dans ce cas il faudra modifier son code pour créer des classe managées comme par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    public ref class ClrStringW
    	{
    	private:
    		...
    	public:
                    ...
             };
    Ensuite, tu pourra rajouter cette dernière comme référence de ton projet C++ managé et tu pourra l'utiliser comme en C#, juste en appellant les classes ( pas besoin de LoadLibrary et tout et tout )
    Donc voilà ...

Discussions similaires

  1. Réponses: 3
    Dernier message: 08/08/2007, 09h29
  2. le minimum de code et aides pour visual
    Par mitherkiller dans le forum C
    Réponses: 4
    Dernier message: 12/02/2007, 20h22
  3. Visual C++ .NET 2003/2005
    Par hello world dans le forum VC++ .NET
    Réponses: 3
    Dernier message: 11/12/2006, 16h32
  4. Visual C++ dans Visual Studio .net 2005 beta 2
    Par T0xF0x dans le forum MFC
    Réponses: 19
    Dernier message: 09/01/2006, 02h09

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