Comment puis-je construire une bibliothèque d'importation (.lib) ET d'une DLL dans Visual C++?
Je veux avoir un seul projet Visual Studio qui crée un fichier DLL et d'une bibliothèque d'importation (.lib) fichier. (Une bibliothèque d'importation est liée de manière statique de la bibliothèque qui prend en charge le chargement de ce fichier DLL dans d'autres projets qui l'utilisent).
Je suis donc allé à Visual Studio C++ 2008 Express Edition, a créé un Nouveau Projet de type Bibliothèque de classes, et de définir le "Type de Configuration" à "Dyanamic Bibliothèque (.dll)".
Mais quand je créer la solution, la seule du fichier de sortie que je vois est un fichier DLL; je ne vois pas de fichier LIB arriver généré. J'ai regardé dans le répertoire du projet et de tous les sous-répertoires (Release et Debug).
Je crois qu'il est possible de construire une LIB et un fichier DLL dans le même temps, parce que sur la MSDN, il dit: "L'éditeur de liens crée la bibliothèque d'importation lorsque la DLL est construit." Aussi, un autre utilisateur de ce site web est la création de LIB et les fichiers DLL dans le même temps à l'aide de Visual C++.
Alors, comment puis-je le faire?
- Je viens d'avoir ce problème exact où mon .lib le fichier n'a pas été généré. Après une recherche sur google par le biais de toutes les infos que j'ai pu trouver sur les causes possibles et soigneusement de passer par toutes les réponses ci-dessous j'ai finalement compris que c'était parce que mon .fichier cpp ne comprend pas mon .h fichier. 🙁 Juste de le mettre ici pour que mon commentaire (avec une faible probabilité) d'aider quelqu'un ou moi-même si mon stupide erreur est répétée dans un futur lointain...
Vous devez vous connecter pour publier un commentaire.
En sélectionnant "Bibliothèque de classes" vous avez été accidentellement lui dire de faire une .Net de la Bibliothèque à l'aide de la CLI (réussi) extenstion de C++.
Au lieu de cela, créer un projet Win32, et dans les Paramètres de l'Application sur la page suivante, choisissez "DLL".
Vous pouvez également faire une DLL MFC ou ATL DLL à partir de ceux de la bibliothèque de choix si vous voulez aller dans cette voie, mais il semble que vous n'avez pas.
Votre projet DLL avez des exportations réelles? Si il n'y a pas d'exportations, l'éditeur de liens ne sera pas générer une bibliothèque d'importation .fichier lib.
Dans la version Express de VS, l'importation des bibliothèques nom est specfied dans les paramètres du projet ici:
Je suppose que c'est la même chose dans l'Express (même s'il offre la possibilité de configurer le nom).
__declspec(dllexport)
attribut?OK, donc j'ai trouvé la réponse à partir de http://binglongx.wordpress.com/2009/01/26/visual-c-does-not-generate-lib-file-for-a-dll-project/ dit que ce problème a été causé par ne pas exporter les symboles et plus instruit sur la façon d'exporter les symboles pour créer le fichier lib. Pour ce faire, ajoutez le code suivant à votre .h de fichier pour votre fichier DLL.
Où BARNABY_EXPORTS et BARNABY_API sont uniques définitions pour votre projet. Ensuite, chaque fonction, vous pouvez exporter vous suffit de précéder par:
Ce problème aurait pu être évité, soit en cliquant sur l'Exportation de Symboles de la boîte de sur le nouveau projet DLL Assistant ou par vote oui pour les lobotomies pour les programmeurs informatiques.
vous devez également spécifier def nom dans les paramètres du projet ici:
De Configuration > Propriétés/Input/Avancé/Module > Fichier de Définition de
Configuration Properties
/Linker
/Input
/Module Definition File
dans VS2010