<div dir="ltr">Hi Brad, <div><br></div><div>+1</div><div style>Solving the problem within ITK would be great.</div><div><br></div><div style>Within Slicer, it would avoid us to maintain a shared library named &quot;ITKFactoryRegistration&quot; preventing IO factory from being loaded multiple times when registering Slicer plugins.</div>

<div style>See <a href="http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;revision=21592">http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;revision=21592</a></div><div style><br></div><div style>
Thanks</div>
<div style>Jc</div></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Mon, Jun 3, 2013 at 12:01 PM, Bradley Lowekamp <span dir="ltr">&lt;<a href="mailto:blowekamp@mail.nih.gov" target="_blank">blowekamp@mail.nih.gov</a>&gt;</span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Matt,<br>
<br>
On windows if no export/import is declared for a symbol it will be considered internal and not specified in the windows DLL interface. A similar things should be done with default visibility with gcc. So this &quot;should&quot; not occur.<br>


<br>
This particular issue should have been resolved with this patch:<br>
<br>
<a href="https://github.com/Kitware/ITK/commit/395420846e0c9e48ede28f84a59794d889b51724" target="_blank">https://github.com/Kitware/ITK/commit/395420846e0c9e48ede28f84a59794d889b51724</a><br>
<br>
Brad<br>
<div class="HOEnZb"><div class="h5"><br>
On Jun 3, 2013, at 11:30 AM, Matt McCormick &lt;<a href="mailto:matt.mccormick@kitware.com">matt.mccormick@kitware.com</a>&gt; wrote:<br>
<br>
&gt; Hi Brad,<br>
&gt;<br>
&gt; Duplicate exports may be an issue.  See, e.g.,<br>
&gt;<br>
&gt;  <a href="https://issues.itk.org/jira/browse/ITK-2796" target="_blank">https://issues.itk.org/jira/browse/ITK-2796</a><br>
&gt;<br>
&gt; Matt<br>
&gt;<br>
&gt; On Mon, Jun 3, 2013 at 2:54 PM, Bradley Lowekamp &lt;<a href="mailto:blowekamp@mail.nih.gov">blowekamp@mail.nih.gov</a>&gt; wrote:<br>
&gt;&gt; Matt,<br>
&gt;&gt;<br>
&gt;&gt; What would be the issue with that?<br>
&gt;&gt;<br>
&gt;&gt; Brad<br>
&gt;&gt;<br>
&gt;&gt; On Jun 3, 2013, at 10:44 AM, Matt McCormick &lt;<a href="mailto:matt.mccormick@kitware.com">matt.mccormick@kitware.com</a>&gt; wrote:<br>
&gt;&gt;<br>
&gt;&gt;&gt; Hi Brad,<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; I think many of the third party libraries that the ImageIO modules<br>
&gt;&gt;&gt; depend on are not set up for shared libraries on Windows.<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; Thanks,<br>
&gt;&gt;&gt; Matt<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; On Mon, Jun 3, 2013 at 2:26 PM, Bradley Lowekamp &lt;<a href="mailto:blowekamp@mail.nih.gov">blowekamp@mail.nih.gov</a>&gt; wrote:<br>
&gt;&gt;&gt;&gt; Hello,<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; What are the possible problem what we will encounter if we convert ITK&#39;s ImageIO modules to be shared libraries on Windows? And manage the gcc exported symbols why we are at it?<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; Performing the factory registration of ImageIO factory objects during static initialization in static libraries is fill with problems and tricky behaviors and is problematic for large applications to manage. By making these libraries shared the ImageIO factory objects should be unique and consistent across different libraries which use ITK, so that they will not get registered multiple times. Additionally, by explicitly specifying the exported symbols on gcc this should help to reduce the library size.<br>


&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; Thanks for you thoughts,<br>
&gt;&gt;&gt;&gt; Brad<br>
&gt;&gt;&gt;&gt; _______________________________________________<br>
&gt;&gt;&gt;&gt; Powered by <a href="http://www.kitware.com" target="_blank">www.kitware.com</a><br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; Visit other Kitware open-source projects at<br>
&gt;&gt;&gt;&gt; <a href="http://www.kitware.com/opensource/opensource.html" target="_blank">http://www.kitware.com/opensource/opensource.html</a><br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; Kitware offers ITK Training Courses, for more information visit:<br>
&gt;&gt;&gt;&gt; <a href="http://kitware.com/products/protraining.php" target="_blank">http://kitware.com/products/protraining.php</a><br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; Please keep messages on-topic and check the ITK FAQ at:<br>
&gt;&gt;&gt;&gt; <a href="http://www.itk.org/Wiki/ITK_FAQ" target="_blank">http://www.itk.org/Wiki/ITK_FAQ</a><br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; Follow this link to subscribe/unsubscribe:<br>
&gt;&gt;&gt;&gt; <a href="http://www.itk.org/mailman/listinfo/insight-developers" target="_blank">http://www.itk.org/mailman/listinfo/insight-developers</a><br>
&gt;&gt;<br>
<br>
_______________________________________________<br>
Powered by <a href="http://www.kitware.com" target="_blank">www.kitware.com</a><br>
<br>
Visit other Kitware open-source projects at<br>
<a href="http://www.kitware.com/opensource/opensource.html" target="_blank">http://www.kitware.com/opensource/opensource.html</a><br>
<br>
Kitware offers ITK Training Courses, for more information visit:<br>
<a href="http://kitware.com/products/protraining.php" target="_blank">http://kitware.com/products/protraining.php</a><br>
<br>
Please keep messages on-topic and check the ITK FAQ at:<br>
<a href="http://www.itk.org/Wiki/ITK_FAQ" target="_blank">http://www.itk.org/Wiki/ITK_FAQ</a><br>
<br>
Follow this link to subscribe/unsubscribe:<br>
<a href="http://www.itk.org/mailman/listinfo/insight-developers" target="_blank">http://www.itk.org/mailman/listinfo/insight-developers</a><br>
</div></div></blockquote></div><br><br clear="all"><div><br></div>-- <br>+1 919 869 8849<br>
</div>