2009-03-02 4 views
0

Я работаю над переносом нашего кода на C++ с eVC 4.0 на Visual Studio 2008. Нашей целью является Windows Mobile 6.1, и мы используем SDK для Windows Mobile 6.0 для нашего приложения.Использование порта STL в VS2008

Наш код использовал порт stl при компиляции в eVC 4, и мы хотели бы продолжать использовать stl-порт, если это вообще возможно.

Кто-нибудь знает, какие шаги необходимы для включения порта STL (5.2.1) в нашем приложении. Мы установили каталоги include в решении (как это было сделано для проекта eVC 4.0), но мы видим ошибки (ниже) в любое время, когда мы пытаемся использовать команды list_back или vector insert с нашими собственными классами (ниже приведена ошибка с нашим классом «TriangleBufferElement»). Эти команды, похоже, работают с родными типами, такими как int, double и т. Д.

Мы обеспечили, чтобы все классы имели надлежащие конструкторы, конструкторы копирования, операторы присваивания и операторы сравнения, и все выглядят правильно.

Любые идеи?

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

Не могли бы вы добавить образец кода вокруг этой линии ошибки? –

+0

Да, а также теги pre/code вокруг вашей ошибки, чтобы было легче читать. – crashmstr

ответ

1

Некоторые ссылки вы, вероятно, должны увидеть (если не видел уже):

STLPort Notes:

могут возникнуть проблемы с узлом распределителем по умолчанию SGI. Однако у меня не было таких проблем. Распределитель узлов по умолчанию довольно быстр, поэтому я бы не рекомендовал отключать его без серьезной причины. Однако, если это вызывает проблемы, определите _STLP_USE_MALLOC или _STLP_USE_NEWALLOC, чтобы обнажаться. malloc()-based или new() -установленный распределитель по умолчанию.

Хотя сообщение this говорит, что оно еще не перенесено на VS2008.

0

Вы переконфигурировали STLPort для новой среды компилятора? Visual Studio 2008 сильно отличается от старого компилятора eVC++.

Try:


configure evc9 
0

В моем случае, это было связано с __PLACEMENT_NEW_INLINE определяется

Смежные вопросы