2008-10-30 6 views
0

J'utilise Visual C++ 2005 Express Edition et obtenir les erreurs de l'éditeur de liens suivants:VC++ erreurs de l'éditeur de liens sur std :: exception :: _ Raise et std :: exception :: exception

19>mylib1.lib(mylibsource1.obj) : error LNK2019: unresolved external symbol "__declspec(dllimport) public: void __thiscall std::exception::_Raise(void)const " ([email protected]@[email protected]@QBEXXZ) referenced in function "protected: static void __cdecl std::vector<class mytype,class std::allocator<class mytype> >::_Xlen(void)" ([email protected][email protected]@@[email protected]@@@[email protected]@@[email protected]@KAXXZ) 
19>mylib2.lib(mylibsource2.obj) : error LNK2001: unresolved external symbol "__declspec(dllimport) public: void __thiscall std::exception::_Raise(void)const " ([email protected]@[email protected]@QBEXXZ) 
19>mylib1.lib(mylibsource1.obj) : error LNK2019: unresolved external symbol "__declspec(dllimport) public: __thiscall std::exception::exception(char const *,int)" ([email protected]@@[email protected]@Z) referenced in function "public: __thiscall std::logic_error::logic_error(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &)" ([email protected]@@[email protected][email protected][email protected]@[email protected]@[email protected]@[email protected]@[email protected]@Z) 
19>mylib2.lib(mylibsource2.obj) : error LNK2001: unresolved external symbol "__declspec(dllimport) public: __thiscall std::exception::exception(char const *,int)" ([email protected]@@[email protected]@Z) 

J'éteins exceptions Generata code, et je me sers avant d'inclure le fichier d'en-tête vectoriel:

#define _HAS_EXCEPTIONS 0 

quelques résultats Google se sont quelques trucs, mais pas « aha! » des solutions qui ont fonctionné pour moi.

EDIT:

Comme il est indiqué "_HAS_EXCEPTIONS 0" ne se met pas hors exceptions, en soi. Ce qu'il fait est, au moins dans le fichier d'en-tête du vecteur, appelez _Raise sur un objet d'exception au lieu d'appeler le "lancer" C++. Dans mon cas, il ne peut pas être lié à la fonction _Raise de l'objet d'exception, car je n'inclue pas la bibliothèque correcte. Qu'est-ce que cette bibliothèque est, cependant, n'est pas évident.

Répondre

1

L'ajout de cette ligne:

#define _STATIC_CPPLIB 

avant d'inclure l'en-tête de vecteur semble faire l'affaire.

0

La troisième erreur indique clairement que #define the _HAS_EXCEPTIONS 0 n'affecte pas. Maintenant, pourrait inclure (il est logique, le partage de code pourrait réduire la taille de votre exécutable). Cela expliquerait pourquoi vous avez encore des erreurs si vous le définissez avant votre inclusion de. Ce type de définition doit être fait dans les paramètres de votre projet.

Notez que _HAS_EXCEPTIONS est une fonctionnalité non prise en charge dans Visual Studio. Il ne désactive pas les exceptions en tant que telles.