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 :

utilisation d'une DLL .Net 2005 dans un programme .Net 2003


Sujet :

C++/CLI

  1. #1
    Candidat au Club
    Inscrit en
    Janvier 2008
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 7
    Points : 2
    Points
    2
    Par défaut utilisation d'une DLL .Net 2005 dans un programme .Net 2003
    Bonjour tout le monde,

    Tout d'abord, je suis nouveau ici (et en .Net aussi). Je galère depuis le début de la semaine et j'aimerai votre aide pour me débloquer. Voila la situation:

    Je crée une DLL sous .Net 2005 que j'arrive a l'utiliser dans un autre programme .Net 2005 en référençant directement le fichier .DLL.

    Mais le truc c'est que je voudrais utiliser cette DLL dans un programme .Net 2003. J'ai Lu qu'il faut l'enregistrer comme COM. Le problème c'est que quand le je fais, j'ai cette erreur au moment ou je référence MACLASS:

    « La bibliothèque de type MACLASS a été exportée d'un assembly CLR et ne peut pas être de nouveau importée en tant qu'assembly CLR »

    Y a-t'il une solution?

  2. #2
    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
    ton programme en visual C++ 2003, c'est un programme .Net ou natif ?

    si c'est un programme .net, tu devrais faciler pouvoir utiliser ton assembly, sinon, tu peux regarder dans ce tuto http://nico-pyright.developpez.com/t...c2005/interop2 voir l'interop com ou le hosting de clr

  3. #3
    Candidat au Club
    Inscrit en
    Janvier 2008
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    En fait, je suis toujours en .Net.

    La DLL est écrite en VB (.Net 2005) et je veux l'utiliser dans un programme VB (.Net 2003)

    J'avais essayé d'utiliser la COM dans un code VB 6 et ça passe, mais impossible de l'ajouter dans mon programme VB (.Net 2003) et ça me fait l'erreur citée plus haut.

  4. #4
    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
    non, mais si tu es full .net, tu peux référencer ton assembly comme d'habitude, pas besoin de com interop

  5. #5
    Candidat au Club
    Inscrit en
    Janvier 2008
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    Je sais, c'est ce qui est tout a fait logique, d'ailleurs la référence passe très bien quand je la fais dans un programme VB 2005.

    Mais quand je veux référencer le fichier .dll dans un programme VB 2003 (comme quand je le fais en 2005), j'ai l'erreur suivante:

    "Une référence "Chemin/MaClass.dll" n'a pas pu être ajoutée. Il ne s’agit pas d'un assembly valide ou d'un composant COM. Seuls les assemblys avec l'extension 'dll' et les composants COM peuvent être référencés. Assurez vous que le fichier est accessible et qu'il s’agit d'un assembly valide ou d'un composant COM"

    C’est un peut pour ça que je me suis à créer un COM…

  6. #6
    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
    je vois ... ton assembly doit utiliser des ressources du framework 2.0 alors que vb2003 ne comprend qe le framework 1.x

    Quand tu l'enregistres pour com/interop et que tu ajoutes la référence, tu ajoutes bien une référence COM ?

  7. #7
    Candidat au Club
    Inscrit en
    Janvier 2008
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    Quand j’enregistre mon assembly pour com/interop, j’ai l’erreur suivante si je référence MACLASS (parmi la liste dans COM):

    « La bibliothèque de type MACLASS à été exportée d'un assembly CLR et ne peut pas être de nouveau importée en tant qu'assembly CLR »

    Tu as raison pour les ressources framework 2.0 et 1.1. J’utilise pour construire ma DLL les ressources « System.Collections.Generic » et « BackgroundWorker » non presente dans la version 1.1…

    Serait-il plus résonable de re-écrire MACLASS en 2003... ?

  8. #8
    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 as essayé de l'enregistrer à la main avec /codebase ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    regasm MaClass.dll /tlb:MaClass.tlb /codebase

  9. #9
    Candidat au Club
    Inscrit en
    Janvier 2008
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    ca donne cette réponse "la bibliothèque de types a été inscrite avec succès" mais toujours les memes erreurs lorsque je reference.

  10. #10
    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
    l'assembly est-elle signée ? as-tu essayé de l'enregistrer dans la GAC ?

    si après ca, ca marche pas, je vois plus que la réécriture

  11. #11
    Candidat au Club
    Inscrit en
    Janvier 2008
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    Oui elle est signée.

    gacutil passe sans probleme mais le probleme demeure pour la reference...

    Bon, un weekend comme on les aime en perspective ^^

    Merci en tout cas pour ton aide.

Discussions similaires

  1. utilisation d'une manette ps3 sixaxis dans un programme
    Par dddj77 dans le forum Matériel
    Réponses: 0
    Dernier message: 31/01/2010, 22h24
  2. Peut on utiliser une DLL DotNEt (C#) dans un programme en C?
    Par Jayceblaster dans le forum Débuter
    Réponses: 12
    Dernier message: 12/02/2008, 17h46
  3. Réponses: 1
    Dernier message: 22/05/2007, 12h03
  4. Réponses: 9
    Dernier message: 06/04/2006, 18h40
  5. Liaison d'une dll Visual C++ dans un programme c++Builder
    Par Cyrilh7 dans le forum C++Builder
    Réponses: 7
    Dernier message: 08/11/2003, 13h49

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