La liaison erreur LNK2001: symbole externe (Visual Studio 2008)

J'ai 3 erreurs de liaison où je ne peux pas vous débarrasser de.

J'ai défini quelques statique de la classe publique constantes d'un type défini par l'utilisateur dans le fichier d'en-tête de la classe. Ensuite j'ai déclaré et initialisé la constante de classe dans le fichier cpp. Je peux utiliser ces constantes dans la classe elle-même. Quand j'ai cependant essayer d'utiliser les constantes dans un autre projet, j'obtiens une erreur de couplage:

error LNK2001: unresolved external symbol "public: static class EFString const CEFMldEreignis::s_typeMelderSteuern"

J'ai aucune idée de ce qui cloche ici. Quelqu'un à une idée?

Merci beaucoup d'avance!

Fichier d'en-tête:

class LIB_EXPORT CEFMldEreignis : public CBusinessObjekt
{
    ...

public:
    static const EFString s_typeMelderSteuern;

    ...
};

fichier cpp:

#include "EFMldEreignis.h"

const EFString CEFMldEreignis::s_typeMelderSteuern = _T("S");

Nous sommes à l'aide de Visual Studio 2008.
Le projet, où les constantes sont définies est ajouté comme une référence dans le propriétés communes de l'autre projet, ainsi qu'un autre répertoire include dans le C++ propriétés.

Dans un autre, le troisième projet, nous sommes en fait de déclarer certaines statique des constantes de classe, et ceux-ci donnent pas les erreurs de liaison lors de leur utilisation.

De l'éditeur de liens de ligne de commande (toutes options):

(Remarque: EuroAllgemeineMasken est "l'autre" projet où les constantes sont utilisées; EuroMelder est le projet où les constantes sont définies et déclarées.)

/OUT:"C:\Eldis3\trunk\ELDIS\Workspace\..\Debug\EuroAllgemeineMasken.dll" /INCREMENTAL     
/NOLOGO /LIBPATH:"C:\Eldis3\trunk\ELDIS\Workspace\..\Debug" 
/LIBPATH:"C:\Eldis3\trunk\ELDIS\Workspace\\..\..\Lib\External\SST" 
/LIBPATH:"C:\Eldis3\trunk\ELDIS\Workspace\\..\..\Lib\External\ELDIS" /DLL /MANIFEST 
/MANIFESTFILE:"Debug\EuroAllgemeineMasken.dll.intermediate.manifest" 
/MANIFESTUAC:"level='asInvoker' uiAccess='false'" /DEBUG /
PDB:"C:\Eldis3\trunk\ELDIS\Workspace\..\Debug\EuroAllgemeineMasken.pdb" 
/SUBSYSTEM:WINDOWS /DYNAMICBASE:NO     
/IMPLIB:"C:\Eldis3\trunk\ELDIS\Workspace\..\Debug\EuroAllgemeineMasken.lib" /MACHINE:X86 
/ERRORREPORT:PROMPT ..\..\ELDIS\Debug\CEDVToolsEldis.lib ..\..\ELDIS\Debug\EuroTetra.lib 
..\..\ELDIS\Debug\Services.lib ..\..\ELDIS\Debug\ServiceManager.lib 
..\..\ELDIS\Debug\CESocketUDP.lib ..\..\ELDIS\Debug\EuroLWZ.lib 
..\..\ELDIS\Debug\EuroRouting.lib ..\..\ELDIS\Debug\MassnahmeTools.lib 
..\..\ELDIS\Debug\EuroDispo.lib ..\..\ELDIS\Debug\EuroMass.lib 
..\..\ELDIS\Debug\BCGControlBar.lib ..\..\ELDIS\Debug\EuroFlug.lib 
..\..\ELDIS\Debug\EuroMFCTools.lib ..\..\ELDIS\Debug\EuroLog.lib 
..\..\ELDIS\Debug\EuroGis.lib ..\..\ELDIS\Debug\EuroDialoge.lib 
..\..\ELDIS\Debug\CECrystalReport.lib ..\..\ELDIS\Debug\EuroInfo.lib 
..\..\ELDIS\Debug\EuroIO.lib ..\..\ELDIS\Debug\EuroPers.lib 
..\..\ELDIS\Debug\EuroStatus.lib ..\..\ELDIS\Debug\CELTextEldis.lib 
..\..\ELDIS\Debug\EuroBers.lib ..\..\ELDIS\Debug\EuroMelder.lib 
..\..\ELDIS\Debug\EuroLeit.lib ..\..\ELDIS\Debug\LOVDialog.lib 
..\..\ELDIS\Debug\EuroFunk.lib ..\..\ELDIS\Debug\EuroEsta.lib 
..\..\ELDIS\Debug\EuroOrt.lib ..\..\ELDIS\Debug\EuroEinsatz.lib 
..\..\ELDIS\Debug\Gms.lib ..\..\ELDIS\Debug\GMTs.lib ..\..\ELDIS\Debug\EuroAdmin.lib 
..\..\ELDIS\Debug\EuroOber.lib ..\..\ELDIS\Debug\EFBusiness.lib 
..\..\ELDIS\Debug\EuroTools.lib ..\..\ELDIS\Debug\DBAccess.lib 
..\..\ELDIS\Debug\DynamicWindows.lib
  • Comment êtes-vous reliant la .fichier cpp (ou à la bibliothèque de l'contenant du projet) pour les "autres" du projet?
  • Nous sommes à l'aide de Visual Studio 2008. Le projet, où les constantes sont définies est ajouté en tant que référence dans les propriétés communes de l'autre projet, ainsi qu'un autre répertoire include en C++ propriétés. Si c'est ce que tu veux dire. Dans un autre, le troisième projet, nous sommes en fait de déclarer certaines statique des constantes de classe, et ceux-ci donnent pas les erreurs de liaison lors de leur utilisation. Aimeriez-vous que je colle les options de ligne de commande comme réponse?
  • Mieux que de l'affichage d'informations supplémentaires a répondu commentaires, est de modifier votre question et l'a mis là. Je pense qu'il contient des informations utiles pour diagnostiquer votre problème.
  • Question modifié avec linker options de ligne de commande.
  • Je ne suis pas si sûr que cela s'applique pour MSVC de l'éditeur de liens, mais pour GCC de l'ordre de comment les libs sont précise les matières dans certaines situations (les symboles doivent avoir été vu avant de les lier à leur encontre). Peut-être cela aide/vaut la peine d'étudier.
  • /sarcasme: j'adore ces "allemand" noms BTW (par exemple MassnahmeTools) 😉 ... (qui ressemble à un gros système avec la longue histoire)
  • Identifier la bibliothèque de la .rpc sera compilé en. Vérifiez que le .fichier cpp est une partie de la bibliothèque. Vérifiez que la bibliothèque est répertorié dans votre lien options. Vérifiez que la bibliothèque est à jour.
  • Essayer de définir cette variable avec LIB_EXPORT dans .fichier cpp.

InformationsquelleAutor Lólindir | 2014-04-03