Hello, I just wanted to report what I see is going on in two simular cases of link errors in ITK and SimpleITK.
The first is ITK with VS12 and shared libraries and CMAKE_WINDOWS_ALL_SYMBOLS:BOOL=ON. It is here on the ITK dashboard [1] and here is the error: itkPolylineMask2DImageFilterTest.cxx.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) const itk::Path,2>::`vftable'" (__imp_??_7?$Path@NV?$ContinuousIndex@N$01@itk@@$01@itk@@6B@) referenced in function "protected: virtual __cdecl itk::PolyLineParametricPath<2>::~PolyLineParametricPath<2>(void)" (??1?$PolyLineParametricPath@$01@itk@@MEAA@XZ) This error began occurring after explicit exporting of the explicitly instantiated of PolyLineParametericPath<2> was merged ( to fix other linking error )[3]. The missing symbol’s class that class's parent itk::Path<2> class, which does not get explicitly instantiated or explicitly exported. The second linking error seems very similar. It is on the SimpleITK dashboard also with VS12 and shared libraries. This configuration does not have the CMAKE_WINDOWS_ALL_SYMBOLS enabled, just the default explicit export for VS. The errors are here [2]: ITKOptimizersv4-4.11.lib(ITKOptimizersv4-4.11.dll) : error LNK2005: "public: virtual void __cdecl itk::ObjectToObjectOptimizerBaseTemplate::StartOptimization(bool)" (?StartOptimization@?$ObjectToObjectOptimizerBaseTemplate@N@itk@@UEAAX_N@Z) already defined in sitkImageRegistrationMethod.obj [C:\d\vs11\SimpleITK-build\SimpleITK-build\Code\Registration\src\SimpleITKRegistration.vcxproj] [C:\d\vs11\SimpleITK-build\SimpleITK.vcxproj] This is similar because the itk::ObjectToObjectOptimiserBaseTemplate class is a parent of the explicitly exported and instantiated itk::SingleValuedNonLinearVnlOptimizerv4. I recall a couple comments related to exporting parent template classes here: http://review.source.kitware.com/#/c/20020/2/Modules/Numerics/Optimizersv4/include/itkLBFGSOptimizerBasev4.h http://review.source.kitware.com/#/c/20020/6/Modules/Numerics/Optimizersv4/include/itkLBFGSOptimizerBasev4.h My hypothesis with these error is: VS12 requires all parents in a exported explicitly instantiated template class to be exported for correct linking. Anyone have any experience to confirm this or additional information? Thanks, Brad [1] https://open.cdash.org/viewBuildError.php?buildid=4681054 [2] https://open.cdash.org/viewBuildError.php?buildid=4680972 [3] https://github.com/InsightSoftwareConsortium/ITK/commit/a94bc525c0f5911b71fcacb647245efd8306990c _______________________________________________ Powered by www.kitware.com Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html Kitware offers ITK Training Courses, for more information visit: http://kitware.com/products/protraining.php Please keep messages on-topic and check the ITK FAQ at: http://www.itk.org/Wiki/ITK_FAQ Follow this link to subscribe/unsubscribe: http://public.kitware.com/mailman/listinfo/insight-developers