From: Juanjo V. <jv...@cn...> - 2011-01-28 12:11:53
|
Hello everyone, I'm experimenting a problem with JNI code generated by SWIG. The problem is not exactly with the code, but when running. I'm trying to use a library developed by others. It's a pretty complex library written in C++ and I'm using it from java. I don't know much about the library internals, apart from what I learn looking here and there Basically I'm using a class called "Image". This class inherits another one: "ImageBase", and contains, among other stuff, an array with the pixels values of the image. That array is a template, so I tell SWIG to instantiate an image for double data type: %{ #include "../image.h" %} %include "../image.h" %template (ImageDouble) Image<double>; When I create the Image using a filename for it, it reads the image properly. Even if I print the info after reading it (in the C++ side), everything is fine. But if I try to access data after returning to java environment, the array is null, image size is 0, and so on. I tried all the stuff I found on the internet (mainly www.swig.org/Doc1.3/Java.html) and nothing works. Some months ago, I remember to had the same problem, I tried a lot of stuff, and finally it worked with no significant changes. Maybe because of any change in the C++ library. That's because I think the problem is any structure, template or whatever that SWIG might be skipping. I can provide more info if anybody can help me, but before annoy the list with so many stuff I prefer to ask if anybody has experimented anything similar or if there is any simple idea I forgot to check. By the way, this simple code, neither works: String path = "path_to_mi_image"; FileName fn = new FileName(path); System.out.println(" Reading: " + fn.getBaseName()); It crashes at: C [libstdc++.so.6+0x8e495] _ZNSsC1ERKSs+0x15 C [libXmippData.so+0x217bb5] _ZNK8FileName11getBaseNameEv+0x45 C [libXmippDataJava.so+0x307c4] Java_xmipp_XmippDataJNI_FileName_1getBaseName+0x44 j xmipp.XmippDataJNI.FileName_getBaseName(JLxmipp/FileName;)Ljava/lang/String;+0 j xmipp.FileName.getBaseName()Ljava/lang/String;+5 ... Which is not very helpful. Thanks for reading, I hope you can help me, because I'm really lost with this issue =/ Sincerely, -- Juanjo Vega (jv...@cn...) Unidad de Biocomputación. Laboratorio B-13. Centro Nacional de Biotecnología. CNB-CSIC. C\ Darwin, 3. Campus de Cantoblanco. Universidad Autónoma de Madrid. 28049, Madrid, Spain. +34 91 585 4510 http://www.cnb.csic.es http://www.biocomp.cnb.csic.es "Las mejores almas son capaces de los mayores vicios como de las mayores virtudes, y aquellos que caminan despacio por el camino recto pueden llegar más lejos que los que corren pero se apartan de él." - Discurso del Método, René Descartes. |