1
0
mirror of https://git.dev.opencascade.org/repos/occt.git synced 2025-08-19 13:40:49 +03:00

0022651: Impossible to build OCC as static library due to using Standard_EXPORT instead of Standard_API

All library-specific macros for defining export / import properties of symbols on Windows (like Standard_API, __Draw_API, _math_API etc.) are eliminated.
Common macro Standard_EXPORT is used in all places where it is necessary.

New macro OCCT_STATIC_BUILD is defined for disabling Standard_EXPORT, to be used instead of HAVE_NO_DLL, though the latter is still supported as well (for compatibility).

To allow building OCCT in static mode on Windows after these changes:
- Files OSD_WNT_1.hxx and OSD_WNT_BREAK.hxx are removed; useful declarations are moved to OSD_WNT.hxx
- In the class IVtkVTK_ShapeData, static fields ARRNAME_MESH_TYPES and ARRNAME_SUBSHAPE_IDS are converted to static inline functions
- Global array ChoixRef defined in IntImp_ComputeTangence.cxx is converted to static function returning element of the array by index
- Unused class Quantity_Convert is removed (it had static field accessed by inline method)
- Struct Approx_Data defined in the same way in BRepApprox_Approx.hxx and GeomInt_WLApprox.hxx is made private member of these classes to avoid name clash
- Some C++ files producing no object code are removed
- In NCollection_EBTree.hxx and StdLPersistent_Collectio.hxx, definition of template virtual method is moved to class definition to avoid MSVC linker warnings on unused symbols
This commit is contained in:
abv
2018-03-15 13:07:48 +03:00
parent 8662560e2c
commit 68df847802
86 changed files with 465 additions and 1367 deletions

View File

@@ -124,7 +124,7 @@ void InitShapeMapper (vtkMapper* theMapper, vtkLookupTable* theColorTable)
{
theMapper->ScalarVisibilityOn();
theMapper->SetScalarModeToUseCellFieldData();
theMapper->SelectColorArray (IVtkVTK_ShapeData::ARRNAME_MESH_TYPES);
theMapper->SelectColorArray (IVtkVTK_ShapeData::ARRNAME_MESH_TYPES());
theMapper->SetColorModeToMapScalars();
theMapper->SetScalarRange (theColorTable->GetRange());
theMapper->SetLookupTable (theColorTable);

View File

@@ -19,16 +19,6 @@
#include <IVtk_Types.hxx>
#include <vtkSmartPointer.h>
#if defined(_WIN32) && !defined(HAVE_NO_DLL)
#ifdef __IVtkTools_DLL
#define IVtkTools_EXPORT __declspec( dllexport )
#else
#define IVtkTools_EXPORT __declspec( dllimport )
#endif
#else
#define IVtkTools_EXPORT
#endif
class vtkLookupTable;
class vtkMapper;

View File

@@ -38,7 +38,7 @@ IVtkTools_DisplayModeFilter::IVtkTools_DisplayModeFilter()
myDoDisplaySharedVertices (false)
{
// Filter according to values in subshapes types array.
myIdsArrayName = IVtkVTK_ShapeData::ARRNAME_MESH_TYPES;
myIdsArrayName = IVtkVTK_ShapeData::ARRNAME_MESH_TYPES();
IVtk_IdTypeMap aTypes;

View File

@@ -167,7 +167,7 @@ int IVtkTools_ShapeDataSource::RequestData(vtkInformation *vtkNotUsed(the
vtkSmartPointer<vtkIdTypeArray> IVtkTools_ShapeDataSource::SubShapeIDs()
{
vtkSmartPointer<vtkDataArray> arr =
GetOutput()->GetCellData()->GetArray(IVtkVTK_ShapeData::ARRNAME_SUBSHAPE_IDS);
GetOutput()->GetCellData()->GetArray(IVtkVTK_ShapeData::ARRNAME_SUBSHAPE_IDS());
return vtkSmartPointer<vtkIdTypeArray>(
vtkIdTypeArray::SafeDownCast(arr.GetPointer()) );
}

View File

@@ -31,7 +31,7 @@ class vtkPolyData;
//! @class IVtkTools_ShapeDataSource.
//! @brief VTK data source for OCC shapes polygonal data.
class IVtkTools_EXPORT IVtkTools_ShapeDataSource : public vtkPolyDataAlgorithm
class Standard_EXPORT IVtkTools_ShapeDataSource : public vtkPolyDataAlgorithm
{
public:

View File

@@ -47,7 +47,7 @@ class IVtkTools_ShapeDataSource;
//! It stores data of OCC shape (the OccShape instance) in vtkInformation object of vtkDataObject.
//! Then pass it to the actors through pipelines,
//! so selection logic can access OccShape easily given the actor instance.
class IVtkTools_EXPORT IVtkTools_ShapeObject : public vtkDataObject
class Standard_EXPORT IVtkTools_ShapeObject : public vtkDataObject
{
public:
vtkTypeMacro (IVtkTools_ShapeObject, vtkObject)

View File

@@ -40,7 +40,7 @@ class vtkActorCollection;
//! @class IVtkTools_ShapePicker
//! @brief VTK picker for OCC shapes with OCC selection algorithm.
class IVtkTools_EXPORT IVtkTools_ShapePicker : public vtkAbstractPropPicker
class Standard_EXPORT IVtkTools_ShapePicker : public vtkAbstractPropPicker
{
public:
vtkTypeMacro(IVtkTools_ShapePicker, vtkAbstractPropPicker)

View File

@@ -38,7 +38,7 @@ vtkStandardNewMacro(IVtkTools_SubPolyDataFilter)
//================================================================
IVtkTools_SubPolyDataFilter::IVtkTools_SubPolyDataFilter()
{
myIdsArrayName = IVtkVTK_ShapeData::ARRNAME_SUBSHAPE_IDS;
myIdsArrayName = IVtkVTK_ShapeData::ARRNAME_SUBSHAPE_IDS();
myDoFiltering = true;
}

View File

@@ -27,7 +27,7 @@
//! @class IVtkTools_SubPolyDataFilter
//! @brief Cells filter according to the given set of cells ids.
class IVtkTools_EXPORT IVtkTools_SubPolyDataFilter : public vtkPolyDataAlgorithm
class Standard_EXPORT IVtkTools_SubPolyDataFilter : public vtkPolyDataAlgorithm
{
public:
vtkTypeMacro(IVtkTools_SubPolyDataFilter,vtkPolyDataAlgorithm)