2009-03-02 5 views
0

Je travaille sur le portage de notre code C++ d'eVC 4.0 vers Visual Studio 2008. Notre cible est Windows Mobile 6.1 et nous utilisons le SDK Windows Mobile 6.0 pour notre application.Utilisation du port STL dans VS2008

Notre code utilisé stl port lorsqu'il est compilé en eVC 4 et nous aimerions continuer à utiliser stl port si possible.

Est-ce que quelqu'un sait quelles sont les étapes nécessaires pour intégrer le port STL (5.2.1) dans notre application. Nous avons défini les répertoires include dans la solution (comme nous l'avons fait pour le projet eVC 4.0), mais nous voyons les erreurs (ci-dessous) à chaque fois que nous essayons d'utiliser list_back ou vector insert avec nos propres classes (ci-dessous l'erreur avec notre classe "TriangleBufferElement"). Ces commandes semblent fonctionner avec des types natifs comme int, double, etc.

Nous nous sommes assurés que toutes les classes ont les bons constructeurs, constructeurs de copie, opérateurs d'assignation et opérateurs de comparaison et que tous semblent être corrects.

Des idées?

C:\Program Files\Windows CE Tools\stlport\stl/_construct.h(119) : error C2665: 'operator new' : none of the 2 overloads could convert all the argument types 
1>  C:\Program Files\Windows Mobile 6 SDK\PocketPC\include\../../../Windows Mobile 6 SDK\PocketPC\Include\Armv4i/new(61): could be 'void *operator new(unsigned int,const std::nothrow_t &) throw()' 
1>  while trying to match the argument list '(unsigned int, TriangleBufferElement *)' 
1>  C:\Program Files\Windows CE Tools\stlport\stl/_construct.h(134) : see reference to function template instantiation 'void stlp_std::_Copy_Construct_aux<_Tp>(_Tp *,const _Tp &,const stlp_std::__false_type &)' being compiled 
1>  with 
1>  [ 
1>   _Tp=TriangleBufferElement 
1>  ] 
1>  C:\Program Files\Windows CE Tools\stlport\stl/_vector.h(381) : see reference to function template instantiation 'void stlp_std::_Copy_Construct<_Tp>(_Tp *,const _Tp &)' being compiled 
1>  with 
1>  [ 
1>   _Tp=TriangleBufferElement 
1>  ] 
1>  C:\Program Files\Windows CE Tools\stlport\stl/_vector.h(376) : while compiling class template member function 'void stlp_std::vector<_Tp>::push_back(const _Tp &)' 
1>  with 
1>  [ 
1>   _Tp=TriangleBufferElement 
1>  ] 
1>  c:\srcdevbranch\pointlib\dtmconverter\dtm\dtmreader\.\trianglebuffer.h(47) : see reference to class template instantiation 'stlp_std::vector<_Tp>' being compiled 
1>  with 
1>  [ 
1>   _Tp=TriangleBufferElement 
1>  ] 
+0

Pouvez-vous ajouter du code exemple autour de cette ligne d'erreur? –

+0

oui, et les étiquettes pré/code autour de votre erreur pour le rendre plus facile à lire. – crashmstr

Répondre

1

Quelques liens vous devriez probablement voir (si pas déjà vu):

STLPort Notes:

Vous pouvez rencontrer des problèmes avec nœud par défaut SGI allocateur. Cependant, je n'avais pas de tels problèmes. L'allocateur de nœud par défaut est assez rapide, donc je ne recommanderais pas de le désactiver sans raison sérieuse. Cependant, si cela cause des problèmes, définissez _STLP_USE_MALLOC ou _STLP_USE_NEWALLOC pour obtenir l'allocateur par défaut malloc()-based ou new().

Bien que this post indique qu'il n'a pas encore été porté à VS2008.

0

Avez-vous reconfiguré STLPort pour le nouvel environnement du compilateur? Visual Studio 2008 est assez différent de l'ancien compilateur eVC++.

Essayez:


configure evc9 
0

Dans mon cas, cela était dû à __PLACEMENT_NEW_INLINE défini