Comiler une dll à partir d'une lib

Signaler
Messages postés
75
Date d'inscription
mardi 22 avril 2008
Statut
Membre
Dernière intervention
15 juillet 2015
-
Messages postés
3874
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
7 novembre 2014
-
Bonjour.
La question va peut-être vous paraître idiote mais est-il possible de compiler une dll à partir d'un .lib et du .h correspondant ?
J'ai récupérer les deux fichiers dans le cadre de mon travail mais j'ai besoin d'utiliser une DLL pas une .lib.
Je précise que je ne sais pas avec quoi les fichiers ont été créé et que je n'ai AUCUN moyen de le savoir.
Si vous pouvez m'aider...
Merci

1 réponse

Messages postés
3874
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
7 novembre 2014
11
Bonjour,

Désolé de la réponse tardive.

Ca devrait être possible si le .lib est bien une librairie statique et non un .lib associé à une dll qui ne fait que décrire les symboles exportés.

Supposons que le code de la librairie statique ExternStatic.lib soit le suivant (Dans ton cas il semble que tu ne le connaisse pas) :
#include <windows.h>

void DisplayMsg(char* lpMsg)
{
  MessageBox(NULL, lpMsg, "DisplayMsg", MB_OK);
}


Tu disposes du fichier ExternStatic.h.

Créé une nouvelle ExternStaticStub.dll. Ajoute lui un fichier .def : ExternStaticStub.def.
Dedans tu mets le mot clé EXPORTS sur la première ligne, suivi du nom de toutes les fonctions (Trouvables dans le .h), une fonction par ligne :
EXPORTS
DisplayMsg


Dans le fichier main.c de la dll, fait simplement un include du .h (Assure toi que le compilateur trouvera ce .h).
#include "ExternStatic.h"


En entrée du lieur, met la librairie statique et le .def (Avec les options qui vont bien).

Compile.

C'est près. Vérifie avec dependency walker avant de tester avec un programme.

Le .lib a très certainement été compilé avec Visual Studio (Question de probabilité et d'extension, on fait plutôt des .a avec gcc). Visual C++ propose dumpbin pour inspecter un .lib.