7
votes

Erreur .Lib lorsque j'utilise une DLL?

J'essaie d'obtenir des pratiques en utilisant des dlls Windows (non utilisés pour eux). J'ai suivi cet article:

http://msdn.microsoft.com/en-us/ Bibliothèque / MS235636 (v = vs.80) .aspx

à la lettre.

Et pourtant, je reçois cette erreur:

1> Lien: erreur fatale LNK1104: impossible d'ouvrir le fichier '.. \ débogo \ math.lib'

Mon projet est un projet DLL, pas une lib. Et il n'y a pas de libs créé de mes projets (toute la solution).

Quelqu'un a une idée de ce qui ne va pas?


4 commentaires

Obtenez-vous l'erreur de liaison sur le projet DLL ou sur le projet d'application de la console?


Le projet Win32 lui-même. Je pense Ce pourrait être parce que tous les membres de mon groupe ne sont pas déclarés avec la déclaration __declSpec (Dllimport)?


Les deux projets sont des projets WIN32. Est-ce le projet .dll ou le projet .exe?


Les instructions disent __declspec (Dllexport)


3 Réponses :


2
votes

Votre projet .dll pourrait créer une importation .Lib. Cela simplifie à l'aide d'une DLL. Une importation .Lib est une bibliothèque simple qui a la même fonction que votre DLL, mais elle n'a pas la mise en œuvre - lorsque vous l'utilisez, elle charge la DLL, puis transmet les appels que vous apportez à la DLL.

ou, le projet de la console pourrait penser que vous avez une importation .Lib - mais vous ne le faites pas.

Les instructions pour créer / utiliser une DLL que vous avez sont un peu impair. Je ne le fais pas de cette façon (avec la boîte de dialogue Ajouter des références). Vous devrez peut-être consulter les paramètres de votre projet et voir si vous voyez une référence à Math.Lib - ou quoi que ce soit sur la création d'une importation .Lib.

En outre, vérifiez vos répertoires de sortie sur le projet .dll et voyez si Math.Lib (ou n'importe quel .Lib) a été créé.


0 commentaires

7
votes

vs ne crée pas de bibliothèque d'importation si la DLL n'exporte rien. Pour vérifier rapidement si c'est votre cas, trouvez votre DLL, ouvrez-la avec Walker de dépendance et voyez s'il y a des exportations du tout. < / p>

Si vous trouvez une vérification manquante des exportations Si vous avez marqué quelque chose pour l'exportation: soit en déclarant des classes / fonctions comme "__declSpec (dllexport)" (lorsque l'en-tête est inclus dans la DLL, Dllimport lorsqu'il est inclus par EXE) ou externe "C" Plus Définition du module (.def) Fichier.


1 commentaires

Pour moi, le __ DeclSpec (dllexport) était le remède pour mon problème. J'espère que cela reste la solution de pointe en 2017



0
votes

Cela pourrait être dû à quelque chose d'aussi simple que la dépendance que vous auriez peut-être ajouté pour votre projet principal sur les projets DLL.

dans Visual Studio 2008 Le paramètre se trouve à l'adresse suivante: Dépendances du projet et simplement la vérification des projets DLL résoudra le problème.

En outre, vous pouvez vérifier que: Le chemin d'accès à la DLL 'Lib's n'est plus inclus dans la ligne de commande "Linker" de votre projet principal à: Propriétés de configuration> Linker> Ligne de commande


0 commentaires