I think your solution is OK. Looks like this is due to a MS compiler error: http://connect.microsoft.com/VisualStudio/feedback/details/753981
On Mon, Mar 18, 2013 at 6:28 AM, Bradley Lowekamp <[email protected]>wrote: > Bill, > > It looks like my solution was less correct :( > > As we are getting a bunch of compilation error on windows now: > > http://open.cdash.org/viewBuildError.php?buildid=2848943 > > What concerned me about your approach was that is blanketly just changes > the export specification for all unspecified methods and classes. So it > likely will have un intended consequences sooner or later. > > Perhaps we should just add some "ifdef GCC"s around the statements I > added? Better yet define "ITK_EXPLICIT_SPECIALIZATION_REQUIRES_EXPORT" in > the config... > > Brad > > > On Mar 16, 2013, at 10:39 AM, Bradley Lowekamp <[email protected]> > wrote: > > Bill, > > Looks like you caught a major issue right before the dashboard did :) You > have impeccable timing! > > I looked at this. And it is just a case of a missing ITKCommon_Export. > It's just a little tricky because you have the non-specilized declaration > and definition. Then a specialized declaration. What's missing is a > statement which says the method has been explicitly instantiated (this just > happens to be a totally specialized version), but the statement is that > same as if it'd been explicitly instantiated. This has been compiler > dependent, and we use the ITKCommon_EXPORT macro for that. It's sounds like > the extern keyword should to this in C++0x, but I hadn't looked at the > closely. > > I hope this help explains what's going on.... > > Brad > > > On Mar 15, 2013, at 10:31 PM, Bill Lorensen <[email protected]> > wrote: > > There are issues with template specializations and -fvisibility=hidden. > From what I read no current compilers officially support this, but most do. > I guess my gcc on the MAXC does not. > > I'll put a patch to gerrit that adds lines like these in > Common/src/CMakeLists.txt > if(APPLE) > set_source_files_properties( itkArrayOutputSpecialization.cxx > PROPERTIES > COMPILE_FLAGS -fvisibility=default ) > endif() > > When I do this, my gcc build is OK. > > Bill > > On Fri, Mar 15, 2013 at 7:00 PM, Bill Lorensen <[email protected]>wrote: > >> It has to do with symbol visibility. If I do nm on the ITKCommon lib, the >> undefined symbols have "t" and not "T". "t" means the symbols are local. If >> I remove the -fvisiibility=hidden flag from ITKCommon's CMakeLists.txt >> file, the tests build fine. >> >> >> >> On Fri, Mar 15, 2013 at 6:49 PM, Bradley Lowekamp <[email protected] >> > wrote: >> >>> Bill, >>> >>> Are you able to compile the release? Or is it a change since then? >>> >>> Brad >>> >>> On Mar 15, 2013, at 7:36 PM, Bill Lorensen <[email protected]> >>> wrote: >>> >>> I see why those statements are there. >>> >>> Still need help. >>> >>> On Fri, Mar 15, 2013 at 4:25 PM, Bill Lorensen >>> <[email protected]>wrote: >>> >>>> More info. If I remove >>>> template<> std::ostream & operator<< <double> (std::ostream & os, const >>>> Array< double > & arr); >>>> template<> std::ostream & operator<< <float> (std::ostream & os, const >>>> Array< float > & arr); >>>> >>>> Both my c++ and clang build fine. >>>> >>>> What is the purpose of these lines? >>>> >>>> Bill >>>> >>>> On Fri, Mar 15, 2013 at 4:09 PM, Bill Lorensen <[email protected] >>>> > wrote: >>>> >>>>> Guys, >>>>> >>>>> This is on my Mac using: >>>>> c++ --version >>>>> c++ --version >>>>> i686-apple-darwin11-llvm-g++-4.2 (GCC) 4.2.1 (Based on Apple Inc. >>>>> build 5658) (LLVM build 2336.1.00) >>>>> >>>>> My clang version builds fine. >>>>> >>>>> Any ideas? >>>>> >>>>> Bill >>>>> >>>>> >>>>> On Fri, Mar 15, 2013 at 11:52 AM, Bill Lorensen < >>>>> [email protected]> wrote: >>>>> >>>>>> Folks, >>>>>> >>>>>> It's been a few days since itk and tried a build. >>>>>> >>>>>> Today I get Linking CXX executable >>>>>> ../../../../bin/ITKCommon1TestDriver >>>>>> Undefined symbols for architecture x86_64: >>>>>> "std::basic_ostream<char, std::char_traits<char> >& itk::operator<< >>>>>> <float>(std::basic_ostream<char, std::char_traits<char> >&, >>>>>> itk::Array<float> const&)", referenced from: >>>>>> void CheckVariableLengthArrayTraits<itk::Array<float> >>>>>> >(itk::Array<float>)in itkNumericTraitsTest.cxx.o >>>>>> itkArrayTest(int, char**)in itkArrayTest.cxx.o >>>>>> "std::basic_ostream<char, std::char_traits<char> >& itk::operator<< >>>>>> <double>(std::basic_ostream<char, std::char_traits<char> >&, >>>>>> itk::Array<double> const&)", referenced from: >>>>>> void CheckVariableLengthArrayTraits<itk::Array<double> >>>>>> >(itk::Array<double>)in itkNumericTraitsTest.cxx.o >>>>>> ld: symbol(s) not found for architecture x86_64 >>>>>> collect2: ld returned 1 exit status >>>>>> make[2]: *** [bin/ITKCommon1TestDriver] Error 1 >>>>>> make[1]: *** >>>>>> [Modules/Core/Common/test/CMakeFiles/ITKCommon1TestDriver.dir/all] Error >>>>>> 2 >>>>>> make: *** [all] Error 2 >>>>>> >>>>>> Bill >>>>>> >>>>>> >>>>> >>>>> >>>>> -- >>>>> Unpaid intern in BillsBasement at noware dot com >>>>> >>>> >>>> >>>> >>>> -- >>>> Unpaid intern in BillsBasement at noware dot com >>>> >>> >>> >>> >>> -- >>> Unpaid intern in BillsBasement at noware dot com >>> _______________________________________________ >>> 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://www.itk.org/mailman/listinfo/insight-developers >>> >>> >>> >> >> >> -- >> Unpaid intern in BillsBasement at noware dot com >> > > > > -- > Unpaid intern in BillsBasement at noware dot com > > > > -- Unpaid intern in BillsBasement at noware dot com
_______________________________________________ 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://www.itk.org/mailman/listinfo/insight-developers
