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#] Comment integrer dll C++ mixte managé/natif ?


Sujet :

C++/CLI

  1. #1
    Membre à l'essai
    Inscrit en
    Août 2005
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 29
    Points : 23
    Points
    23
    Par défaut [C#] Comment integrer dll C++ mixte managé/natif ?
    Bonjour à tous,

    J'ai un problème sur lequel je m'arrache les cheveux depuis 2 jours : j'ai une librairie complexe mixte C++ managé / C++ natif. Cette librairie se compile en DLL managée.

    Elle est utilisée par mon appli principale, qui est en C# pur. Je développe avec Visual Studio 2003 sous le framework 1.1. J'ai donc ajouté dans mon appli C# une dépendance sur la librairie C++ via l'explorateur de solution.

    Sous Windows XP, tout se passe normalement et j'utilise ma librairie autant que je veux. Sous 2000 c'est une autre histoire : l'appli plante directement avec l'erreur suivante :
    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
    C:\temp>buggedapp
     
    Exception non gérée : System.IO.FileNotFoundException: Le fichier ou l'assembly nommé HipponNativeCodeWrappers ou l'une de ses dép
    endances, est introuvable.
    Nom du fichier : "HipponNativeCodeWrappers"
       at buggedapp.Class1.Main(String[] args)
     
    === Pre-bind state information ===
    LOG: DisplayName = HipponNativeCodeWrappers, Version=1.0.2216.29312, Culture=neutral, PublicKeyToken=null
     (Fully-specified)
    LOG: Appbase = C:\temp\
    LOG: Initial PrivatePath = NULL
    Calling assembly : buggedapp, Version=1.0.2216.29312, Culture=neutral, PublicKeyToken=null.
    ===
     
    LOG: Application configuration file does not exist.
    LOG: Policy not being applied to reference at this time (private, custom, partial, or location-based assembly bind).
    LOG: Post-policy reference: HipponNativeCodeWrappers, Version=1.0.2216.29312, Culture=neutral, PublicKeyToken=null
    LOG: Attempting download of new URL file:///C:/temp/HipponNativeCodeWrappers.DLL.
    Inutile de préciser que la libraire est bien présente dans le repertoire cité, et qu'elle a le bon nom...

    Si, dans mon appli C#, je ne fais aucun appel à la libraire, tout s'éxecute correctement. Mais si je fais un appel, l'appli plante tout de suite avant même de rentrer dans le main(), et donc bien avant le code qui rentre dans la librairie.

    Est ce que quelqu'un a déjà entendu parler de ce problème ?

  2. #2
    Membre expérimenté
    Avatar de freddyboy
    Homme Profil pro
    Architecte technique
    Inscrit en
    Novembre 2003
    Messages
    810
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Novembre 2003
    Messages : 810
    Points : 1 696
    Points
    1 696
    Par défaut
    question bete juste comme ca, je vois que ta dll est un wrapper, elle ne fait pas appel à un composant qui est present sur ton Xp et pas sur le 2000 par hasard ? Sinon je vois pas du tt.

    @+
    Someday I will be the most powerful Jedi !

    Freddyboy - Blog

  3. #3
    Membre à l'essai
    Inscrit en
    Août 2005
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 29
    Points : 23
    Points
    23
    Par défaut
    Hmm ce serait une explication plausible, mais elle est essentiellement basée sur CRT (pas de MFC, pas de COM, pas de STL, ActiveX, enfin rien de tout ça; il ne me semble pas qu'il y ait de dépendance spécialement funky.

    j'avais une version précédente de cette librairie qui marchait, mais depuis que j'ai partiellement refait mes wrappers, ça déconne. Evidemment je ne suis pas capable de comparer ces deux versions pour chercher les différences

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    487
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2002
    Messages : 487
    Points : 621
    Points
    621
    Par défaut
    DependencyWalker A télécharger ici http://www.dependencywalker.com/
    On ne peut pas faire boire un âne qui n'a pas soif.

  5. #5
    Membre à l'essai
    Inscrit en
    Août 2005
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 29
    Points : 23
    Points
    23
    Par défaut
    Merci, ce soft est très bien fait je trouve.

    Il m'a dit qu'effectivement il me manquait une dépendance, mais il ne me dit pas laquelle , et il n'y a pas de problème apparent dans l'arbre principal qui liste les DLL...

    Le message exact est
    Error: At least one module has an unresolved import due to a missing export function in an implicitly dependent module

    Ouinn

  6. #6
    Expert éminent
    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
    Points : 8 344
    Points
    8 344
    Par défaut
    essai de développer tous les noeuds d'arbre. Il doit y avoir normallement une des dlls ou sous dlls en rouge ...

    note :
    Error: At least one module has an unresolved import due to a missing export function in an implicitly dependent module
    Ne t'en préocupes pas, il semble qu'il y ai toujours cette érreur, apparement à cause d'une dll nommée MPR.dll qui doit être sans doute intégrée à Windows, car plusieurs de mes applis l'utilisent sans pb ( SHLWAPI qui l'utilise )

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Comment utiliser OEM(Oracle entreprise manager)
    Par hugobob dans le forum Entreprise Manager
    Réponses: 9
    Dernier message: 05/09/2007, 16h37
  2. comment integrer plusieurs css ?¿?¿
    Par artotal dans le forum Mise en page CSS
    Réponses: 10
    Dernier message: 28/12/2005, 12h40
  3. Réponses: 16
    Dernier message: 22/03/2005, 21h57
  4. Comment integrer un path
    Par dinver dans le forum Linux
    Réponses: 3
    Dernier message: 07/04/2004, 17h16
  5. Réponses: 1
    Dernier message: 06/04/2004, 11h01

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