some symbols not exported in windows compilation (xdmf)
This issue was created automatically from an original Mantis Issue. Further discussion may take place here.
I have a plugin, it compile perfectly in Linux and Mac, but not in windows7 (visual C++ 2008).
Paraview 3.14.1 git version (using superbuild)
Reason: Symbols are not exposed in the windows library.
errors:
... ... Build started: Project: PXDMFReader, Configuration: Release|Win32 Linking... Creating library C:\Users\utilisateur\ParaView\builds\ParaView-build\bin\Release\PXDMFReader.lib and object C:\Users\utilisateur\ParaView\builds\ParaView-build\bin\Release\PXDMFReader.exp vtkPXDMFDocument.obj : error LNK2019: unresolved external symbol "public: __thiscall vtkXdmfDocument::~vtkXdmfDocument(void)" (??1vtkXdmfDocument@@QAE@XZ) referenced in function "public: void * __thiscall vtkXdmfDocument::`scalar deleting destructor'(unsigned int)" (??_GvtkXdmfDocument@@QAEPAXI@Z) vtkPXDMFDocument.obj : error LNK2019: unresolved external symbol "public: int __thiscall vtkXdmfDomain::GetVTKDataType(class XdmfGrid *)" (?GetVTKDataType@vtkXdmfDomain@@QAEHPAVXdmfGrid@@@z) referenced in function "public: virtual int __thiscall vtkPXDMFDocument::ReadOutputType(void)" (?ReadOutputType@vtkPXDMFDocument@@UAEHXZ) vtkPXDMFDocument.obj : error LNK2019: unresolved external symbol "public: class XdmfGrid * __thiscall vtkXdmfDomain::GetGrid(__int64)" (?GetGrid@vtkXdmfDomain@@QAEPAVXdmfGrid@@_J@Z) referenced in function "public: virtual int __thiscall vtkPXDMFDocument::ReadOutputType(void)" (?ReadOutputType@vtkPXDMFDocument@@UAEHXZ) vtkPXDMFDocument.obj : error LNK2019: unresolved external symbol "public: __thiscall vtkXdmfDocument::vtkXdmfDocument(void)" (??0vtkXdmfDocument@@QAE@XZ) referenced in function "protected: __thiscall vtkPXDMFDocument::vtkPXDMFDocument(void)" (??0vtkPXDMFDocument@@IAE@XZ) vtkPXDMFDocument.obj : error LNK2019: unresolved external symbol "public: bool __thiscall vtkXdmfDocument::SetActiveDomain(int)" (?SetActiveDomain@vtkXdmfDocument@@QAE_NH@Z) referenced in function "public: virtual class vtkXdmfDomain * __thiscall vtkPXDMFDocument::PrepareDocument(void)" (?PrepareDocument@vtkPXDMFDocument@@UAEPAVvtkXdmfDomain@@XZ) vtkPXDMFDocument.obj : error LNK2019: unresolved external symbol "public: bool __thiscall vtkXdmfDocument::SetActiveDomain(char const *)" (?SetActiveDomain@vtkXdmfDocument@@QAE_NPBD@Z) referenced in function "public: virtual class vtkXdmfDomain * __thiscall vtkPXDMFDocument::PrepareDocument(void)" (?PrepareDocument@vtkPXDMFDocument@@UAEPAVvtkXdmfDomain@@XZ) vtkPXDMFDocument.obj : error LNK2019: unresolved external symbol "public: bool __thiscall vtkXdmfDocument::Parse(char const *)" (?Parse@vtkXdmfDocument@@QAE_NPBD@Z) referenced in function "public: virtual class vtkXdmfDomain * __thiscall vtkPXDMFDocument::PrepareDocument(void)" (?PrepareDocument@vtkPXDMFDocument@@UAEPAVvtkXdmfDomain@@XZ) vtkPXDMFDocument.obj : error LNK2019: unresolved external symbol "public: __thiscall vtkXdmfHeavyData::~vtkXdmfHeavyData(void)" (??1vtkXdmfHeavyData@@QAE@XZ) referenced in function "public: class vtkDataObject * __thiscall vtkPXDMFDocument::GenerateOutput(class vtkInformation *,class vtkInformationVector * *,class vtkInformationVector *)" (?GenerateOutput@vtkPXDMFDocument@@QAEPAVvtkDataObject@@PAVvtkInformation@@PAPAVvtkInformationVector@@PAV4@@z) vtkPXDMFDocument.obj : error LNK2019: unresolved external symbol "public: class vtkDataObject * __thiscall vtkXdmfHeavyData::ReadData(class XdmfGrid *)" (?ReadData@vtkXdmfHeavyData@@QAEPAVvtkDataObject@@PAVXdmfGrid@@@z) referenced in function "public: class vtkDataObject * __thiscall vtkPXDMFDocument::GenerateOutput(class vtkInformation *,class vtkInformationVector
- *,class vtkInformationVector *)" (?GenerateOutput@vtkPXDMFDocument@@QAEPAVvtkDataObject@@PAVvtkInformation@@PAPAVvtkInformationVector@@PAV4@@z) vtkPXDMFDocument.obj : error LNK2019: unresolved external symbol "public: __thiscall vtkXdmfHeavyData::vtkXdmfHeavyData(class vtkXdmfDomain *,class vtkAlgorithm *)" (??0vtkXdmfHeavyData@@QAE@PAVvtkXdmfDomain@@PAVvtkAlgorithm@@@z) referenced in function "public: class vtkDataObject * __thiscall vtkPXDMFDocument::GenerateOutput(class vtkInformation *,class vtkInformationVector * *,class vtkInformationVector *)" (?GenerateOutput@vtkPXDMFDocument@@QAEPAVvtkDataObject@@PAVvtkInformation@@PAPAVvtkInformationVector@@PAV4@@z) C:\Users\utilisateur\ParaView\builds\ParaView-build\bin\Release\PXDMFReader.dll : fatal error LNK1120: 10 unresolved externals Build log was saved at "file://c:\Users\utilisateur\ParaView\builds\ParaView-build\Plugins\ParaviewPXDMFReader\PXDMFReader.dir\Release\BuildLog.htm" PXDMFReader - 11 error(s), 0 warning(s) Fermeture de la commande avec le code 1. ... ...
THE SOLUTION: Add VTK_EXPORT to some classes.
THE PATCH:
diff --git a/vtk/vtkXdmfHeavyData.h b/vtk/vtkXdmfHeavyData.h index 7995329..0b3413f 100644 --- a/vtk/vtkXdmfHeavyData.h +++ b/vtk/vtkXdmfHeavyData.h @@ -35,7 +35,7 @@ class vtkAlgorithm;
// vtkXdmfHeavyData helps in reading heavy data from Xdmf and putting that into // vtkDataObject subclasses. -class vtkXdmfHeavyData +class VTK_EXPORT vtkXdmfHeavyData { vtkXdmfDomain* Domain; XdmfDataItem DataItem; diff --git a/vtk/vtkXdmfReaderInternal.h b/vtk/vtkXdmfReaderInternal.h index 2d7c7e9..3adb9be 100644 --- a/vtk/vtkXdmfReaderInternal.h +++ b/vtk/vtkXdmfReaderInternal.h @@ -51,8 +51,8 @@ #include #include <vtksys/ios/sstream>
-class vtkXdmfDomain; -class vtkXdmfDocument +class VTK_EXPORT vtkXdmfDomain; +class VTK_EXPORT vtkXdmfDocument { public: //--------------------------------------------------------------------------- @@ -173,7 +173,7 @@ public: };
//*************************************************************************** -class vtkXdmfDomain +class VTK_EXPORT vtkXdmfDomain { private: XdmfInt64 NumberOfGrids;