none
Erreur liée à l'utilisation des wrapperDll RRS feed

  • Question

  • Bonjour,

    Nous avons développé une DLL sous C# (Code managé) et qui sera déployé dans un projet C++ (code non managé).

    Pour communiquer le code non managé écrit en c++ avec la dll, nous avons utilisé la notion des wrapperDLL. 

    Sur la machine de développement, nous avons pu compiler et exécuter correctement le projet de déploiement. 

    Par contre en lançant l'application hors la machine de développement, sur certains poste ça marche par contre sur d'autres non.

    là ou ça ne marche pas, j'ai une erreur dont le numéro est 140001  qui empêche l'exécution de mon programme. Si j'annule les instructions faisant appel au wrapperDll il n y a plus de problème.

    je crois que l'erreur est liée à un manque d'un pack windows ou quelque chose comme ça.

    que pensez vous?

    NB:

           projet dll est développé sous VS2010 

          Projet de déploiement est développé sous VS2005

          Projet WRAPPERDLL est développé sous VS2005

    • Modifié ZINEBHAIDA mercredi 15 octobre 2014 14:21
    mercredi 15 octobre 2014 14:04

Réponses

Toutes les réponses

  • Bonjour,

    Il vous manque probablement des redistribuables C++ sur les machines ou tout simplement une version de .NET adéquates. Si votre wrapper est écrit sous 2005 alors il vous faut les redistribuables C++ 2005 ( Redistribuable x86  ou Redistribuable x64). Ceux-ci aurait logiquement dû être présents dans votre projet de déploiement. 

    L'installation du framework .Net adéquat est également un pré-requis...

    Bien cordialement,


    Fabrice JEAN-FRANCOIS, Novencia TS

    mercredi 15 octobre 2014 15:33
  • WrapperDll ?

    C'est très flou comme description ?

    C'est l'utilisation du C++/CLI pour faire une Dll de Wrapping "à la main" ?

    C'est l'utilisation de CCW ?

    ...

    le code d'erreur en hexa, le message d'erreur associé et un bout de code, ça serait pas de refus.


    Paul Bacelar, Ex - MVP VC++

    mercredi 15 octobre 2014 16:14
    Modérateur
  • Passe un petit coup de Process Monitor (je ne peux pas mettre de liens) sur un poste ayant l'erreur.
    jeudi 16 octobre 2014 07:31
  • Bonjour,

    J'ai essayé d'installer plusieurs versions de vcredist_x86 mais ça ne marche pas toujours.

    Probablement le problème est dû à une side_by_side configuration incorrect.

    Vous trouvez ci-dessous le contenu du fichie manifest lié à mon wrapper dll:

    <?xml version='1.0' encoding='UTF-8' standalone='yes'?>
    <assembly xmlns='urn:schemas-microsoft-com:asm.v1' manifestVersion='1.0'>
      <dependency>
        <dependentAssembly>
          <assemblyIdentity type='win32' name='Microsoft.VC80.DebugCRT' version='8.0.50727.6195' processorArchitecture='x86' publicKeyToken='1fc8b3b9a1e18e3b' />
        </dependentAssembly>
      </dependency>
    </assembly>

    @Paul

    Oui j'ai utilisé C++/CLI pour faire la DLL du wrapping

    CCW ça me dit rien: qu'est ce que cela veut dire?

    Je note que l'application "Dkmètre" écrite en C/C++ et qui fait appel au wrapperDll qui à son tour fait appel à la dll écrite en C# se lance à partir d'un logiciel nommé Microstation( logiciel CAO/DAO). Alors en essayant de lancer Dkmètre, Microstation renvoie une erreur indiquant qu'elle pas possible de charger l'application DKMETRE.


    Si j'annule dans le projet Dkmètre les instructions faisant appel au wrapperDLL, l'application Dkmètre se lance correctement.


    jeudi 16 octobre 2014 11:50
  • Copie d'écran du message d'erreur (avec le titre de la fenêtre), svp ?

    Pouvez-vous générez un dump en cas de crash sur les machines qui posent problèmes, avec ADPlus ou DrWatson ?

    Pensez à générer les .pdb même en Release.


    Paul Bacelar, Ex - MVP VC++

    jeudi 16 octobre 2014 12:54
    Modérateur
  • Bonjour,

    Bon, j'ai réussi à résoudre le problème. En faite je devais générer mon wrapperDLL en mode release au lieu du mode debug

    • Marqué comme réponse ZINEBHAIDA jeudi 16 octobre 2014 16:08
    jeudi 16 octobre 2014 15:39