2010-05-04 15 views

Répondre

0

Si vous appelez un Dll, vous aurez besoin d'un Lib avec cela. vous pouvez voir le lien ci-dessous pour plus d'informations

Ceci est de wikipedia

liens vers les bibliothèques dynamiques est généralement traitée par un lien vers une bibliothèque d'importation (votre .LIB) lors de la construction ou un lien pour créer un fichier exécutable. L'exécutable créé contient ensuite une table d'adresses d'importation (IAT) par laquelle tous les appels de fonction DLL sont référencés (chaque fonction DLL référencée contient sa propre entrée dans l'IAT). Au moment de l'exécution, l'IAT est rempli d'adresses appropriées qui pointent directement vers une fonction dans la DLL chargée séparément.

+0

Il semble que les fichiers de .h de ' 'Ressemble .lib' ici. – Gtker

+0

@Gtker - .lib ne ressemble pas à un fichier .H. lors de la construction d'un exe qui accède à dll il y a 2 option (i) obtenir le .h, .lib (pour la compilation et la liaison) et .dll (pour l'exécution) prêt. (ii) utilisez Loadlibrary(), GetProcAddress() et appelez vos fonctions dll. dans ce cas vous n'aurez pas besoin de fichiers .Lib ou .H. (mon conseil est de rester loin du second choix) – SysAdmin

1

En général, vous avez besoin de .lib pour l'éditeur de liens et de .dll lors de l'exécution. Le fichier .lib s'appelle une "bibliothèque d'importation", qui contient la colle qui indique à l'éditeur de liens les fonctions que vous appelez peuvent être trouvées dans le fichier .dll associé.

Vous trouverez probablement que seul le fichier .dll est requis lors de l'exécution.

Ceci est une mise en page largement utilisée pour les projets DLL Win32 et n'est pas limitée à Winpcap.

+0

Mais la plupart du temps, je n'ai besoin que de '.lib' ou' .dll', mais pas des deux. – Gtker

+0

@Gtker: Je ne suis pas sûr de comprendre votre préoccupation concernant l'utilisation des deux fichiers. Les instructions sur cette page de documentation que vous avez référencé me paraissent parfaitement normales. –

+0

Quand '.dll' a-t-il besoin d'une" bibliothèque d'importation "? De nombreux programmes qui utilisent MSVCR.dll ne nécessite jamais une telle "bibliothèque d'importation". – Gtker

1

Ce n'est pas seulement avec winpcap, toutes les bibliothèques externes sont comme ça.

  • Lorsque vous Compile vos codes sources qui en utilisant la bibliothèque particulière, vous avez besoin des fichiers d'en-tête *.h de cette bibliothèque, et vous obtiendrez *.o fichiers
  • Lorsque vous liez ces *.o fichiers exécutables, vous aurez besoin *.lib ou *.dll.a des dossiers.
  • Lorsque vous exécutez ces fichiers exécutables, vous aurez besoin *.dll fichiers
+0

Je comprends le cas '.lib' ou' .dll', mais pas '.lib' ** AND **' .dll' – Gtker

+0

@Gtker, vous voulez dire quand vous exécutez (ne compilez pas) vos exécutables, vous avez besoin de .lib ? – YOU

+0

Je ne comprends pas ce qu'est une "bibliothèque d'importation", j'ai seulement utilisé "bibliothèque d'objets" jusqu'à présent. – Gtker