Warum ist MSVC10 ignoriert meine #pragma warning(disable: 4251)?

Also das 4251 Warnung ist eine seriöse Basis zumindest die microsoft-compiler. Im wesentlichen, jedes mal, wenn Sie eine template-Klasse oder-nicht-dllexport Klasse überall in der header-definition, erhalten Sie diese Warnung. Besser noch, es gibt zahlreiche Klassen in der stl (wie Karte), wo Sie auch nicht loszuwerden, diese Fehler, Punkt.

Mein problem ist, ist, dass für eine bestimmte Klasse, die "#pragma warning(disable: 4251)" nur flat-out nicht funktioniert. Es funktioniert sonst überall, aber hier.

DelWestInspectionProgram.cpp

#include "stdafx.h"
#pragma warning(disable: 4251)
...

Output Log:
E:\svn\VisionNow\VisionSuite\VI.Inspector.ImageProcessing.Common\BIImage.h(79): warning       C4251: 'BIImage::_data' : class 'boost::shared_array<T>' needs to have dll-interface to be   used by clients of class 'BIImage'
6>          with
6>          [
6>              T=unsigned char
6>          ]
6>E:\svn\VisionNow\VisionSuite\VI.Inspector.ImageProcessing.Operators\BIImageOperator.h(25): warning C4251: 'BIImageOperator::_savePath' : class 'std::basic_string<_Elem,_Traits,_Ax>' needs to have dll-interface to be used by clients of class 'BIImageOperator'
6>          with
6>          [
6>              _Elem=char,
6>              _Traits=std::char_traits<char>,
6>              _Ax=std::allocator<char>
6>          ]

Jegliche Hilfe würde sehr geschätzt werden.

  • Haben Sie die #pragma-in der header-Datei, die die Ursache der Warnung? Auch, wenn die header-Datei wird vorkompiliert werden, müssen Sie möglicherweise erstellen Sie den vorkompilierten header.
InformationsquelleAutor Mranz | 2011-12-22
Schreibe einen Kommentar