2010-10-21 9 views
1

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

Maintenant, j'ai essayé de les mettre dans une DLL séparée, de sorte que les fichiers ne doivent pas être inclus dans tous les projets.

Lors de la liaison, j'obtiens une erreur LNK2001 (symbole non résolu) pour une structure, 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. (?)

Le struct est défini comme

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

Et dans les fichiers en utilisant cette structure de la dll correctement son également défini

extern uTSystem ABC; 

Le message d'erreur est:

error LNK2001: Nichtaufgeloestes externes Symbol "struct uTSystem ABC" ([email protected]@[email protected]@A) 

Des indices? Merci

+0

Avez-vous le LINK2001 lors de la liaison de la DLL ou de l'application consommatrice? Il peut également être utile d'inclure le message d'erreur exact. – harper

+0

Je reçois l'erreur, lors de la liaison de la DLL – Simon

+0

le message d'erreur est: erreur LNK2001: Nichtaufgeloestes supplémentaires Symbole "struct uTSystem ABC" (? ABC @@ 3UuTSystem @@ A) – Simon

Répondre

1

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

Alors que le déclare extern qu'il ya une variable ABC 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; 
Questions connexes