Matt,

I believe that GCC 4.1 also had a very similar problem to what is occurring in 
with Apple Clang now.

That looks like a good example for the problem.

The replacement of all dynamic_casts of all itk::Objects is one approach. Here 
is a few others:

1) Make an explicit instantiation library with the ITK classes part of the 
shared libraries' interfaces.
2) Just compile the problematic libraries with default visibility.
3) Restore the functionality of the old “WrapITK” Explicit language/feature to 
explicitly instantiate all of ITK.
4) Write an entire library which fully encapsulates the ITK templated interface 
and used it’s own object for the visibility specified API :)

It’s interesting to note that Slicer CLI interface does not contain ITK 
templated objects. Does Slicer use ITK objects any where in it’s public API’s?

HTH,
Brad

> On Nov 11, 2016, at 6:01 PM, Matt McCormick <matt.mccorm...@kitware.com> 
> wrote:
> 
> Here are the tests:
> 
>  http://review.source.kitware.com/#/c/21755/
> 
> where reasonable export specification is added in both ITK and the
> client libraries. But, dynamic_cast fails on OSX:
> 
>  https://open.cdash.org/testDetails.php?test=499059765&build=4637669
> 
> 
> Matt
> 
> On Thu, Nov 10, 2016 at 3:21 PM, Johnson, Hans J <hans-john...@uiowa.edu> 
> wrote:
>> I agree with Marcus.  At least until it is very clear that not using 
>> dynamic_cast is the only solution to a broken compiler, I am very weary of 
>> “doing what works today”.
>> 
>> Hans
>> 
>> 
>> --
>> 
>> 
>> On 11/10/16, 1:11 PM, "Insight-developers on behalf of Marcus D. Hanwell" 
>> <insight-developers-boun...@itk.org on behalf of marcus.hanw...@kitware.com> 
>> wrote:
>> 
>>    On Tue, Nov 8, 2016 at 5:01 PM, Matt McCormick
>>    <matt.mccorm...@kitware.com> wrote:
>>> Hi folks,
>>> 
>>> As we have wrestled with in Slicer, along with other applications
>>> where ITK is used in multiple shared libraries, dynamic_cast can fail
>>> on Mac OSX.
>>> 
>>> I summarized the cause of the problem and steps for the proposed solution 
>>> here:
>>> 
>>>  https://issues.itk.org/jira/browse/ITK-3490
>>> 
>>> Feedback is welcome. The effort is targeted for the ITK 4.11.0 release.
>>> 
>>    From the issue it is not clear to me why you can't fix the symbol
>>    visibility issues, or which of these cases it causing the breakage.
>>    Reading the linked blog post it seems like Apple/Clang is doing the
>>    right thing, and C++ libraries must be careful to use consistent
>>    symbol visibility.
>> 
>>    I would be interested in further details on which case or cases are
>>    causing dynamic_cast to fail, and why using consistent symbol
>>    visibility in the interfaces is not feasible/possible.
>> 
>>    Thanks,
>> 
>>    Marcus
>>    _______________________________________________
>>    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
>> 
>> 
> _______________________________________________
> slicer-devel mailing list
> slicer-de...@bwh.harvard.edu
> http://massmail.spl.harvard.edu/mailman/listinfo/slicer-devel
> To unsubscribe: send email to slicer-devel-requ...@bwh.harvard.edu with 
> unsubscribe as the subject
> http://www.slicer.org/slicerWiki/index.php/Documentation/Nightly/Developers/FAQ

_______________________________________________
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

Reply via email to