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

Visual C++ Discussion :

Lier une ancienne DLL


Sujet :

Visual C++

  1. #1
    Nouveau membre du Club
    Inscrit en
    Janvier 2005
    Messages
    62
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 62
    Points : 39
    Points
    39
    Par défaut Lier une ancienne DLL
    Bonjour à tous,

    Dans le cadre de la refonte d'un poste de Windows XP vers Windows Seven, je suis amené à intégrer une ancienne DLL dans un nouveau projet Visual Studio C++.

    J'ai essayé d'inclure la DLL dans les références afin d'utiliser les fonctions sans succès.

    La commande dumpbin me donne le retour suivant
    dumpbin /export MYDLL.DLL

    Microsoft (R) COFF/PE Dumper Version 11.00.61030.0
    Copyright (C) Microsoft Corporation. All rights reserved.


    Dump of file MYDLL.DLL
    LINK : warning LNK4094: 'MYDLL.DLL' est un exécutable MS-DOS*; utilisez EXEHDR pour en faire un dump

    Summary
    Quand je tente de charger la DLL via la méthode
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    HINSTANCE hGetProcIDDLL = LoadLibraryA("MYDLL.DLL");
    A l'exécution, j'obtiens une pop-up d'erreur avec le message suivant :
    MYDLL.DLL n'est pas conçu pour s'exécuter sous Windows ou il contient une erreur. Installez à nouveau le programme à l'aide du support d'installation d'origine, ou bien contactez votre administrateur système ou le fournisseur du logiciel pour obtenir du support.
    Mon problème est que je n'ai pas les sources ayant permis de générer la dll.

    Any idea ?

    NB : La dll a été compilée en Fortran

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 071
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 071
    Points : 12 116
    Points
    12 116
    Par défaut
    Une Dll 16-bits ???
    Pour le confirmer, faudrait aller dans un musée pour récupérer les outils de cette époque.

    http://gaming.stackexchange.com/ques...64-bit-windows

  3. #3
    Nouveau membre du Club
    Inscrit en
    Janvier 2005
    Messages
    62
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 62
    Points : 39
    Points
    39
    Par défaut
    J'ai fait un petit coup de commande file sous linux et j'obtiens le résultat suivant :
    >file MYDLL.DLL
    MYDLL.DLL: MS-DOS executable, NE for MS Windows 3.x (driver)

    Donc 16-bit? Très probablement...

    Existe-t-il un moyen de conversion? d'appel ?

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 071
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 071
    Points : 12 116
    Points
    12 116
    Par défaut
    OK un NE file:
    http://wiki.osdev.org/NE
    C'est donc du bon vieux Win16.

    Une Dll 16 bit pense qu'elle est encore dans les années 80 et qu'elle a accès à tous et n'importe quoi dans le système et c'est clairement plus le cas.
    Le VDM dont il est question dans l'article en lien dans ce post est une émulation d'un environnement 16 bit dans du 32 bits.

    Dans mon précédent post, il est mention d'un certain nombre de hack pour essayer de faire fonctionner des jeux avec des Dll 16bits sur des machines 64.

    Mais franchement, un code qui a plus de 20ans et qui n'est pas maintenu, il y a forcément mieux maintenant.

    Je pense qu'il serait plus rentable de prendre du temps pour trouver une bibliothèque de remplacement plus à jour que de prendre un temps fou pour une migration extrêmement hypothétique.

  5. #5
    Nouveau membre du Club
    Inscrit en
    Janvier 2005
    Messages
    62
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 62
    Points : 39
    Points
    39
    Par défaut
    Well ...

    Disons que la problématique est un peu plus complexe que cela.

    C'est une dll fournissant des méthodes mathématiques afin d'établir des consignes de pilotage pour une machine (datant de la même période).

    Ce modèle mathématique est bien sûr propriétaire, donc pas de source disponible ... Et l'élaboration d'un nouveau modèle s'avère long et coûteux sachant que la machine n'est pas modifiée (donc pas d'intérêt économique...)

    Et comme la machine vieillit beaucoup mieux que les systèmes informatiques la pilotant ...

    Je suis donc prêt à me risquer sur une migration si il existe un espoir de faisabilité ...

  6. #6
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    17 438
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 17 438
    Points : 43 081
    Points
    43 081
    Par défaut
    Dans ce cas tu as peut-être intérêt à gérer cela dans un environnement virtualisé contenant un système 32 bits voire 16 bits.
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

  7. #7
    Nouveau membre du Club
    Inscrit en
    Janvier 2005
    Messages
    62
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 62
    Points : 39
    Points
    39
    Par défaut
    Effectivement l'utilisation d'une VM peut palier temporairement à mon problème, le temps qu'un groupe d'étude se penche sur la réalisation d'une nouvelle librairie mathématique pour le pilotage de cette machine.

    Durant mes différentes recherches je suis notamment tombé sur cet article abordant la notion de thunk :
    https://support.microsoft.com/en-us/kb/155763

    Cela semble permettre d'utiliser une dll 16bit dans une application 32bit.

    Quelqu'un a déjà eu une expérience dans ce domaine?

    Si oui, est-il possible, une fois l'application obtenue en 32bit, de la faire fonctionner sur un Win7 ?

  8. #8
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    17 438
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 17 438
    Points : 43 081
    Points
    43 081
    Par défaut
    oui, le soucis est qu'en mode 64 bits, il n'est plus possible d’exécuter de taches 16 bits : limitation CPU. Exécuter des taches 32 bits en 64 bits ne pose pas de problème.
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

  9. #9
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    La Virtual DOS Machine native de Windows ne peut pas, mais un truc qui fait carrément de l'émulation devrait en être capable.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

Discussions similaires

  1. Comment lier une DLL à un exe en 4.0 ?
    Par alavoler dans le forum C#
    Réponses: 4
    Dernier message: 25/01/2013, 17h26
  2. Comment faire pour lier une DLL avec mon application ?
    Par therev123 dans le forum wxWidgets
    Réponses: 1
    Dernier message: 25/07/2012, 21h50
  3. Lier une dll
    Par alpha_one_x86 dans le forum Windows
    Réponses: 1
    Dernier message: 09/12/2008, 15h01
  4. lier une DLL avec visual c++ 2008
    Par Asmod_D dans le forum Visual C++
    Réponses: 2
    Dernier message: 19/07/2008, 14h10
  5. [VC6] Lier une DLL
    Par Selenite dans le forum MFC
    Réponses: 4
    Dernier message: 11/01/2004, 13h45

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