Question

I ont une solution composée de 3 projets. La première est une bibliothèque statique, et deux fichiers .exe en mode console qui en dépendent et un lien avec cette bibliothèque. Leurs paramètres semblent être identiques. Je construis un d'entre eux:

  

1> ------ Construire commencé: Projet: masksample, Configuration: Debug Win32 ------
  1> ...
Compiling   1> stdafx.cpp
  1> ...
Compiling   1> masksample.cpp
  1> manifeste aux ressources Compiler ...
  1> Liaison ...
  1> LINK: C: \ Users \ DarekSz \ Praca \ cci \ Debug \ masksample.exe introuvable construit ou non par le dernier maillon supplémentaire; effectuer le lien complet
  1> Embedding manifeste ...
  1> masksample - 0 erreur (s), 0 avertissement (s)
  ========== Construire: 1 succeeded, 0 a échoué, 1 mise à jour, 0 sautée ==========

Alors je vais à la construction de l'autre:

  

1> ------ Construire commencé: Projet: calibsample, Configuration: Debug Win32 ------
  1> ...
Compiling   1> stdafx.cpp
  1> ...
Compiling   1> calibsample.cpp
  1> manifeste aux ressources Compiler ...
  1> Liaison ...
  1> LINK: C: \ Users \ DarekSz \ Praca \ cci \ Debug \ calibsample.exe introuvable construit ou non par le dernier maillon supplémentaire; effectuer le lien complet
  1> Création bibliothèque C: \ Users \ DarekSz \ Praca \ cci \ Debug \ calibsample.lib et de l'objet C: \ Users \ DarekSz \ Praca \ cci \ Debug \ calibsample.exp
  1> Embedding manifeste ...
  1> calibsample - 0 erreur (s), 0 avertissement (s)
  ========== Construire: 1 succeeded, 0 a échoué, 1 mise à jour, 0 sautée ==========

Pourquoi l'éditeur de liens créer le .lib et les fichiers .exp cette fois-ci? Y at-il une option pour activer et désactiver cette fonction que j'activé sans le savoir à ce sujet?

Était-ce utile?

La solution

Il est un peu tard, mais, peut-être quelqu'un d'autre pourrait trouver utile cette astuce.

BTW, je ne suis pas un c ++ gourou ...

Dans ma solution que j'ai 3 projets. L'un est un projet dll, les autres sont deux projets d'applications Win32 référencement projet dll.

En général, construit, vous avez avec votre dll également d'autres fichiers générés (.exp, .lib) aussi pour les projets non dll. Cela peut occour lorsque vous incluez un fichier .h du projet dll, dans le projet d'application, qui contient une classe marquée avec __declspec (dllexport).

Pour éviter l'éditeur de liens pense que votre essayez d'inclure des fichiers .h « exporter » utiliser une expression conditionnelle pour définir votre macro _declspec.

Exemple:

#if defined(_DO_NOT_EXPORT)
#define DllExport  
#else
#define DllExport __declspec(dllexport)
#endif

Ok, disons que vous avez un MyClass.h dans votre projet dll.

dans votre fichier .h, vous pouvez maintenant:

class DllExport MyClass {
 ...
}

Si vous voulez inclure ce fichier .h dans un projet non dll, il vous suffit de définir la condition de _DO_NOT_EXPORT

#define _DO_NOT_EXPORT
#include "MyClass.h"

Autres conseils

Ceci est normal si une ou plusieurs fonctions est / sont exportés à partir de votre exécutable.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top