[Insight-developers] Problems compiling today

Bill Lorensen bill.lorensen at gmail.com
Mon Mar 18 10:42:03 EDT 2013


That is probably the cleanest. I do not have access to a MS compiler
though. And I'm on the west coast for the month.

Maybe Hans and Kent can try it since it is there code?

Bill

On Mon, Mar 18, 2013 at 7:31 AM, Bradley Lowekamp <blowekamp at mail.nih.gov>wrote:

> So... You think we should add a try compile to check for this bug and
> define "ITK_EXPLICIT_SPECIALIZATION_REQUIRES_EXPORT" appropriately?
>
> Brad
>
> On Mar 18, 2013, at 10:20 AM, Bill Lorensen <bill.lorensen at gmail.com>
> wrote:
>
> 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 <blowekamp at mail.nih.gov>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 <blowekamp at mail.nih.gov>
>> 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 <bill.lorensen at gmail.com>
>> 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 <bill.lorensen at gmail.com>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 <
>>> blowekamp at mail.nih.gov> 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 <bill.lorensen at gmail.com>
>>>> wrote:
>>>>
>>>> I see why  those statements are there.
>>>>
>>>> Still need help.
>>>>
>>>> On Fri, Mar 15, 2013 at 4:25 PM, Bill Lorensen <bill.lorensen at gmail.com
>>>> > 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 <
>>>>> bill.lorensen at gmail.com> 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 <
>>>>>> bill.lorensen at gmail.com> 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
>
>
>


-- 
Unpaid intern in BillsBasement at noware dot com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.itk.org/pipermail/insight-developers/attachments/20130318/6e069ec2/attachment.htm>


More information about the Insight-developers mailing list