[ITK-users] [ITK] Generating compatible Java wrappings of SimpleITK between Windows and Linux (x86-64)
Kosma Dunikowski
k.dunikowski at pixel.com.pl
Thu Sep 14 11:14:57 EDT 2017
Hi again,
Thanks for the response. In the end I got to work properly with the
forked swig I mentioned (https://github.com/johnwason/swig/tree/java64),
after adding
#if defined(SWIGWORDSIZE64)
%apply unsigned int { size_t };
%apply const unsigned int & { const size_t & };
#endif
as recommended by the patch's author. I asked the swig maintainers to
consider pulling these changes in.
Kosma
On 13.09.2017 19:14, Lowekamp, Bradley (NIH/NLM/LHC) [C] wrote:
> Hello,
>
> That you for posting the issue.
>
> Can you please create an issue for this problem in SimpleITK’s Github issue tracker:
> https://github.com/SimpleITK/SimpleITK/issues
>
> I recall looking into this problem some time ago and not being happy with this inconsistent interface for Java that SWIG generated. It should be consistent. There is not much to how we specify the interface for Java, so this is really SWIG will need to be fixed to get our interface proper.
>
> Unfortunately, the mixture of type long and BinInteger is complicated since the long type cannot be implicitly converted to a BigInteger. In our generated code for testing we added a class to help with this conversion. Depending on your usage this may be a useful approach.
>
> Thanks,
> Brad
>
> On 9/13/17, 6:46 AM, "Kosma Dunikowski" <k.dunikowski at pixel.com.pl> wrote:
>
> Hi,
>
> I'm having a problem with swig-generated Java wrappings on both Windows
> and Linux. I'm getting different method signatures all over the place, e.g:
>
> Windows:
> public void add(long x) {
> SimpleITKJNI.VectorInt64_add(swigCPtr, this, x);
> }
>
> Linux:
> public void add(int x) {
> SimpleITKJNI.VectorInt64_add(swigCPtr, this, x);
> }
>
> Windows:
> public java.math.BigInteger getPixelAsUInt64(VectorUInt32 idx) {
> return SimpleITKJNI.Image_getPixelAsUInt64(swigCPtr, this,
> VectorUInt32.getCPtr(idx), idx);
> }
>
> Linux:
> public long getPixelAsUInt64(VectorUInt32 idx) {
> return SimpleITKJNI.Image_getPixelAsUInt64(swigCPtr, this,
> VectorUInt32.getCPtr(idx), idx);
> }
>
> (full diff @
> https://drive.google.com/a/pixel.com.pl/file/d/0Bzm8rPONV4SJOTA4R0tHTXFPWms/view?usp=sharing)
>
> As you can see there are some differences in data sizes. So far I've
> tried building it with swig 3.0.8, 3.0.9, 3.0.12 and a patched fork
> mentioned at https://github.com/swig/swig/pull/649 with similar results.
> I'm using ITK v4.10.0 and SimpleITK v0.10.0 but I've also tried the
> latest releases. As for the compilers, I used multiple versions of gcc
> on Linux and mingw-w64 and Visual Studio on Windows.
>
> I've tried manually undefining SWIGWORDSIZE64 on Linux (which is enabled
> if SITK_ULONG_SAME_AS_UINT64 test passes), which resulted in matching
> wrappings but also immediate segfaults after I tried using it.
>
> If anyone knows how to tackle this problem, I would greatly appreciate
> it, since I'm unable to maintain separate Java codebases for different
> platforms.
>
> Best regards,
>
> Kosma Dunikowski
>
> _____________________________________
> 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://www.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-users
> _______________________________________________
> Community mailing list
> Community at itk.org
> http://public.kitware.com/mailman/listinfo/community
>
>
More information about the Insight-users
mailing list