web-dev-qa-db-fra.com

Comment faire un fichier .lib quand avoir un fichier .dll et un fichier d'en-tête

J'essaie de créer une application dans Visual Studio qui pourra accéder à un fichier .dll qui existe déjà. J'ai besoin de l'application pour appeler des routines. J'ai également un fichier d'en-tête qui existe déjà.

J'ai fait des recherches sur Internet et j'ai découvert que je devais créer un fichier .lib. En regardant des questions similaires ici, j'ai trouvé un lien: http://support.Microsoft.com/kb/13131 Je ne peux cependant pas suivre les instructions.

Les informations dans le lien indiquent de créer un fichier DEF (j'ai lu ailleurs que cela doit être compilé en tant que DLL avec le même nom, mais je ne sais pas quel est ce nom, le même nom que le fichier .dll?). Mais je ne comprends pas la première direction, "Utiliser DUMPBIN/EXPORTS". J'ai ensuite besoin de "stub out" les fonctions, puis quelque chose à voir avec les fichiers .OBJ (je ne sais pas ce que ces les fichiers sont).

Existe-t-il des instructions pas à pas, similaires au lien ci-dessus, faciles à suivre?

40
hde

Vous aurez besoin de Microsoft Visual C++ 2010 Express (ou de toute autre source d'outils de ligne de commande MSVC) et de votre DLL.

Pas:

  1. dumpbin /EXPORTS yourfile.dll > yourfile.exports
  2. Collez les noms des fonctions nécessaires à partir de yourfile.exports dans un nouveau yourfile.def fichier. Ajoutez une ligne avec le mot EXPORTS en haut de ce fichier.
  3. Exécutez les commandes suivantes à partir de VC\bin répertoire (celui où lib.exe et d'autres outils de compilation résident).

 vcvars32.bat

 lib /def:yourfile.def /out:yourfile.lib

ou pour les versions x64

 lib /def:yourfile.def /machine:x64 /out:yourfile64.lib

Vous devez générer deux fichiers: yourfile.lib et yourfile.exp

56
Sany Liew

Vous pouvez utiliser l'outil IMPLIB de Digital Mars. Il peut créer un fichier lib en utilisant uniquement la DLL, sans avoir besoin d'un fichier .def.

Le lien de téléchargement est http://ftp.digitalmars.com/bup.Zip .

La ligne de commande est:

implib.exe /s mydll.lib mydll.dll
16
Desu_Never_Lies