Здравствуйте, Sergey, Вы писали:
S>Hello, opendx!
S>You wrote on Mon, 28 Mar 2005 08:38:49 GMT:
o>> Создал шаблон DLL в Visual Studio .NET, добавил в класс одну строчку
o>> vector<int> vi; и полчил неприятное предупреждение:
o>> o>> h:\c\dlltest\dlltest.h(20) : warning C4251: 'Cdlltest::vi' : class
o>> 'std::vector<_Ty>' needs to have dll-interface to be used by clients of
o>> class 'Cdlltest'
o>> with
o>> [
o>> _Ty=int
o>> ]
o>>
S>Это предупреждение надлежит давить прагмой
S>Pete Becker, один из разработчиков того STL, что поставлялся с VC 6, на эту
S>статью сильно ругался
Вери, говорит, мислидинь статейка, и на кой чорт ее
S>только написали. На самом деле, если тебе надо под VC 6, следует взять
S>апдейт его стля (раньше был на сайте динкумваре, есть и на рсдн) и перестать
S>обращать внимание на warning C4251. Под VC 7.1 — апдейт брать не надо,
S>ворнинг игнорировать.
Попробовал проигнорировать. В VC 7.1. При попытке использовать вектор
Cdlltest dllt;
dllt.vi.push_back( 3 );
сразу же вылет
HEAP[usedll.exe]: Invalid Address specified to RtlValidateHeap( 00370000, 003D4F10 )
при закрытии простейшего тестового приложения. Если же оставить explicit instantiation и
игнорировать второй warning, то кажется хотя-бы работает, хоть warning и побольше и понекрасивше...