Question

J'ai un h- et un cpp fichier avec quelques calculs utilisés dans plusieurs de mes projets.

Maintenant, j'essayé de les mettre dans une dll séparée, de sorte que les fichiers ne doivent pas être inclus dans chaque projet.

Lors de la liaison que je reçois une erreur LNK2001 (symbole non résolu) pour un struct, mais lib et dll sont au bon endroit.

J'utilise le

#ifdef TOOLS_EXPORTS
#define TOOLS_API __declspec(dllexport)
#else
#define TOOLS_API __declspec(dllimport)
#endif

macro, qui fonctionne très bien pour deux méthodes.

La structure est définie comme

TOOLS_API typedef  struct  {
char Name[128];
}  uTSystem;

Et dans les fichiers en utilisant cette structure de la dll correctement son aussi défini (?)

extern uTSystem ABC;

Le message d'erreur est le suivant:

error LNK2001: Nichtaufgeloestes externes Symbol "struct uTSystem ABC" (?ABC@@3UuTSystem@@A)

Les conseils? Merci

Était-ce utile?

La solution

En supposant que vous avez défini TOOLS_EXPORT lors de la compilation de la DLL, vous exporter la ABC variable. Dans votre code, vous définissez comme extern uTSystem ABC; C'est ok pour le fichier d'en-tête, que vous partagez avec la DLL consommer.

Alors que le déclare extern qu'il ya un ABC variable vous devez définir dans l'un de votre fichier .cpp:

uTSystem ABC;

sans extern devant. Votre fichier pourrait ressembler à ceci:

---- tools.h ----

#ifdef TOOLS_EXPORTS
#define TOOLS_API __declspec(dllexport)
#else
#define TOOLS_API __declspec(dllimport)
#endif

TOOLS_API typedef  struct  {
char Name[128];
}  uTSystem;

extern uTSystem ABC;

---- tools.cpp ----

#include tools.h

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