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 2.0 pb c# et c++


Sujet :

C++/CLI

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 47
    Par défaut Migration 2.0 pb c# et c++
    Bonjour,

    Tout d'abord, j'aimerais m'excuser car je ne sais pas si je poste au bon endroit.

    Je suis en train de reprendre un projet.
    Je dois migrer une application web écrit en 1.1 en 2.0


    Dans cette application j'ai :
    • un projet écrit en : C,C++ borland, C++ non managé,MFC
    • plusieurs projets C#
    • un projet asp.net


    J'ai réussis à migrer mon projet grace à visual studio.
    Le projet c++ a été compilé en /clr:oldsyntax
    Il est appelé dans le code c#

    Lorsque j'exécute mon code, j'ai une erreur COM
    Le code c# et c++ n'arrivent pas à communiquer

    J'aimerais avoir quelques pistes car là j'avoue je n'ai aucune idée.

  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
    Par défaut
    il faudrait un peu plus de précisions

    C# communique avec ton projet C++ par com interop ?
    ton projet C++ est une dll native ? une assembly ?
    si c'est une dll native, pourquoi utiliser /clr:oldsyntax ?
    si c'est une assembly, pourquoi utiliser com interop ?

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 47
    Par défaut
    Salut,

    Je souhaiterai te remercier pour tes questions


    Citation Envoyé par nico-pyright(c) Voir le message
    il faudrait un peu plus de précisions
    C# communique avec ton projet C++ par com interop ?
    oui
    Citation Envoyé par nico-pyright(c) Voir le message
    ton projet C++ est une dll native ? une assembly ?
    si c'est une dll native, pourquoi utiliser /clr:oldsyntax ?
    mon projet c++ est une dll
    en fait, il ya du c, c++ non managé, MFC donc il ya que avec le /clr:oldsyntax que mon code compile
    J'ai eu beaucoup de mal à trouvé les bonnes options de compilation car ça n'a pas voulu compiler au début.

    Je suis nulle ou débutante (si on veut etre gentil avec moi)

    Je ne sais pas quel démarche faire pour que mon application se migre correctement

    à ton avis, c'est possible que je puisse migrer l'application?

  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
    Par défaut
    à mon avis, c'est possible de migrer, mais pas forcément nécessaire.
    Et si c'est une dll native, alors pas besoin de /clr, il suffit de compiler avec aucun support du CLR http://dotnet.developpez.com/faq/cpp...mode#nomanaged
    D'autant plus si ta dll est un objet COM

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 47
    Par défaut
    Citation Envoyé par nico-pyright(c) Voir le message
    à mon avis, c'est possible de migrer, mais pas forcément nécessaire.
    Et si c'est une dll native, alors pas besoin de /clr, il suffit de compiler avec aucun support du CLR http://dotnet.developpez.com/faq/cpp...mode#nomanaged
    D'autant plus si ta dll est un objet COM
    Salut,

    je viens d'essayer de compiler sans option clr
    et j'ai ce genre d'erreur :
    Erreur 1 error C2653: 'System' : n'est pas un nom de classe ni d'espace de noms
    je suis vraiment trop nul,
    je ne sais pas si ma dll est un objet com ou non

  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
    Par défaut
    si y a du System, c'est qu'y a du .net alors, il faut garder un switch /clr

    si tu enleves le oldsyntax, quel genre d'erreur as-tu ?

    Difficile de t'aider si tu ne sais pas ce qu'il ya dans ton projet

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 47
    Par défaut
    Citation Envoyé par nico-pyright(c) Voir le message
    si y a du System, c'est qu'y a du .net alors, il faut garder un switch /clr

    si tu enleves le oldsyntax, quel genre d'erreur as-tu ?

    Difficile de t'aider si tu ne sais pas ce qu'il ya dans ton projet
    j'ai repris ce projet même si j'ai pas les compétences

    dans mon projet il ya de tout

    il a un lourd historique et il a été codé un peu n'importe comment:
    par exemple tu as :
    • le c++ appel des fonctions c
    • des classes mfc
    • des classes non managé
    • tu as dans une méthode du c++ managé et non managé

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 47
    Par défaut
    Erreur 866 error C3699: 'interior_ptr' : impossible d'utiliser cette indirection sur le type 'System::String'

    Erreur 868 error C2678: '==' binaire : aucun opérateur trouvé qui accepte un opérande de partie gauche de type 'System::IntPtr' (ou il n'existe pas de conversion acceptable)

    Erreur 870 error C4980: '__gc' : l'utilisation de ce mot clé requiert l'option de ligne de commande /clr:oldSyntax

    Erreur 463 error C3699: '*' : impossible d'utiliser cette indirection sur le type 'Stime::Net::Aviso::Commun:roxy:xCDate'

    Erreur 497 error C2728: 'System::IntPtr' : un tableau natif ne peut pas contenir ce type managé

    Erreur 144 error C3699: '*' : impossible d'utiliser cette indirection sur le type 'System::String'

    etc...

  9. #9
    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
    Par défaut
    dans ce cas, soit il te faut garder le oldsyntax, soit il te faut réécrire les parties managées en C++/CLI, tout dépend s'il y en a beaucoup ou pas.

    Cela veut donc dire que tu exposes des objets managés qui peuvent etre utilisés avec une référence dans ton projet C#

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 47
    Par défaut
    Citation Envoyé par nico-pyright(c) Voir le message
    dans ce cas, soit il te faut garder le oldsyntax, soit il te faut réécrire les parties managées en C++/CLI, tout dépend s'il y en a beaucoup ou pas.

    Cela veut donc dire que tu exposes des objets managés qui peuvent etre utilisés avec une référence dans ton projet C#
    Merci beaucoup pour ton aide

    Je ne peux pas réécrire le code car il ya en beaucoup trop
    J'ai un peu plus de 2 millions de ligne de code dans mon projet c++

    Avec le oldsyntax, mon c# et mon c++ ne communique pas

  11. #11
    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
    Par défaut
    comment tentes-tu de les faire communiquer ?

  12. #12
    Membre averti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 47
    Par défaut
    Citation Envoyé par nico-pyright(c) Voir le message
    comment tentes-tu de les faire communiquer ?
    dans le code c#, on appel tout simplement la méthode c++

    je ne sais pas si je répond bien à ta question

    en fait le code a été dévellopé en offshore et la en est en train de le reprendre

  13. #13
    Membre averti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 47
    Par défaut
    Je te donne le message d'erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    L'exception System.Runtime.InteropServices.COMException n'a pas été gérée par le code utilisateur
      Message="Descripteur non valide (Exception de HRESULT : 0x80070006 (E_HANDLE))"
      Source="mscorlib"
      ErrorCode=-2147024890
      StackTrace:
           à System.Runtime.InteropServices.Marshal.ThrowExceptionForHRInternal(Int32 errorCode, IntPtr errorInfo)
           à System.Runtime.InteropServices.Marshal.ThrowExceptionForHR(Int32 errorCode)
           à System.Runtime.InteropServices.Marshal.FreeHGlobal(IntPtr hglobal)
           à _app_exit_callback()
           à <CrtImplementationDetails>.LanguageSupport.UninitializeAppDomain()
           à <CrtImplementationDetails>.LanguageSupport.Cleanup(LanguageSupport* , Exception innerException)

  14. #14
    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
    Par défaut
    on appelle la méthode C++ ok, mais comment a-t-elle été "déclarée" ?

    Avec une référence ? un import ?

  15. #15
    Membre averti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 47
    Par défaut
    Citation Envoyé par nico-pyright(c) Voir le message
    on appelle la méthode C++ ok, mais comment a-t-elle été "déclarée" ?

    Avec une référence ? un import ?
    avec une référence

  16. #16
    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
    Par défaut
    ben, alors, je vois pas ce que viennent faire des erreurs de marshaling ...

    j'avoue ne pas comprendre trop comment fonctionne ton projet ... t'aurais pas un projet minimal qui reproduit l'erreur ?

  17. #17
    Membre averti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 47
    Par défaut
    Citation Envoyé par nico-pyright(c) Voir le message
    ben, alors, je vois pas ce que viennent faire des erreurs de marshaling ...

    j'avoue ne pas comprendre trop comment fonctionne ton projet ... t'aurais pas un projet minimal qui reproduit l'erreur ?
    euh non

    merci beaucoup pour ton aide

Discussions similaires

  1. [MySQL -> PostGreSQL] Migration
    Par Nepomiachty Olivier dans le forum Administration
    Réponses: 9
    Dernier message: 23/04/2010, 16h33
  2. Pb migration Access / SQL server
    Par yoyo dans le forum MS SQL Server
    Réponses: 10
    Dernier message: 25/04/2005, 10h39
  3. migration de ms access xp vers primebase
    Par d@rkness dans le forum Autres SGBD
    Réponses: 2
    Dernier message: 17/11/2002, 00h08
  4. [Migratation] Application portable, indépendant du SGDB
    Par benouille dans le forum Décisions SGBD
    Réponses: 6
    Dernier message: 28/08/2002, 13h51
  5. [Kylix] Migration delphi -> kylix
    Par Christian dans le forum EDI
    Réponses: 1
    Dernier message: 03/04/2002, 22h50

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