[Insight-users] [Community] explicitly instantiate vnl_sparse_matrix

Wei Liu weiliu620 at gmail.com
Tue Oct 15 13:07:31 EDT 2013


Matt thanks for the information. I tried to add the following code in
my main.cpp but it doesn't work:
--------------------------
template class vnl_sparse_matrix<bool>;

static int vnl_sparse_matrix_float_tickler()
{
  vnl_sparse_matrix<bool> md(3, 5);
  vnl_sparse_matrix_bool_tickler(); // to avoid compiler warning
  return md(0,0);
}
----------------------------------------
Then I created a vnl_sparse_matrix+bool-.cxx file in the 'template'
folder, and put the above code in the file (and include the txx file),
and re-compile itk. I got the following errors:

=========================
/home/sci/weiliu/packages/InsightToolkit-4.3.1/Modules/ThirdParty/VNL/src/vxl/core/vnl/Templates/vnl_sparse_matrix+bool-.cxx:
In function ‘int vnl_sparse_matrix_float_tickler()’:
/home/sci/weiliu/packages/InsightToolkit-4.3.1/Modules/ThirdParty/VNL/src/vxl/core/vnl/Templates/vnl_sparse_matrix+bool-.cxx:8:34:
error: ‘vnl_sparse_matrix_bool_tickler’ was not declared in this scope
In file included from
/home/sci/weiliu/packages/InsightToolkit-4.3.1/Modules/ThirdParty/VNL/src/vxl/core/vnl/Templates/vnl_sparse_matrix+bool-.cxx:1:0:
/home/sci/weiliu/packages/InsightToolkit-4.3.1/Modules/ThirdParty/VNL/src/vxl/core/vnl/vnl_sparse_matrix.txx:
In instantiation of ‘vnl_sparse_matrix<T>
vnl_sparse_matrix<T>::conjugate_transpose() const [with T = bool]’:
/home/sci/weiliu/packages/InsightToolkit-4.3.1/Modules/ThirdParty/VNL/src/vxl/core/vnl/Templates/vnl_sparse_matrix+bool-.cxx:3:16:
  required from here
/home/sci/weiliu/packages/InsightToolkit-4.3.1/Modules/ThirdParty/VNL/src/vxl/core/vnl/vnl_sparse_matrix.txx:967:7:
error: incomplete type ‘vnl_complex_traits<bool>’ used in nested name
specifier
[ 60%] Built target itkhdf5_cpp
make[2]: *** [Modules/ThirdParty/VNL/src/vxl/core/vnl/CMakeFiles/itkvnl.dir/Templates/vnl_sparse_matrix+bool-.cxx.o]
Error 1
make[1]: *** [Modules/ThirdParty/VNL/src/vxl/core/vnl/CMakeFiles/itkvnl.dir/all]
Error 2
make[1]: *** Waiting for unfinished jobs....
[ 60%] Built target ITKGIFTI-all
make: *** [all] Error 2
===============================

It looks the 'bool' does not support some numeric traits defined in
the vnl_sparse_matrix template. There seems no easy workaround?

Thank you,
Wei


On Tue, Oct 15, 2013 at 8:20 AM, Matt McCormick
<matt.mccormick at kitware.com> wrote:
> Hi Wei,
>
> It may need a "tickle".
>
> For example,
>
>
> $ cat Modules/ThirdParty/VNL/src/vxl/core/vnl/Templates/vnl_sparse_matrix+int-.cxx
>
> #include <vnl/vnl_sparse_matrix.txx>
>
> template class vnl_sparse_matrix<int>;
>
> static int vnl_sparse_matrix_float_tickler()
> {
>   vnl_sparse_matrix<int> md(3, 5);
>   vnl_sparse_matrix_float_tickler(); // to avoid compiler warning
>   return md(0,0);
> }
>
>
> HTH,
> Matt
>
> On Tue, Oct 15, 2013 at 4:56 AM, Wei Liu <weiliu620 at gmail.com> wrote:
>> Dear ITK users,
>>
>> Is there a method to explicitly instantiate vnl_sparse_matrix<bool>?
>> I'm trying to define: vnl_sparse_matrix<bool> mymatrix, but get  error
>>
>> undefined reference to `vnl_sparse_matrix<bool>::vnl_sparse_matrix()'
>>
>> I tried to add
>>
>> template class vnl_sparse_matrix<bool>;
>>
>> on the top of my main.cxx but it doesn't work. I appreciate any insights.
>>
>> Wei
>> _____________________________________
>> 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://www.itk.org/mailman/listinfo/insight-users
>> _______________________________________________
>> Community mailing list
>> Community at itk.org
>> http://public.kitware.com/cgi-bin/mailman/listinfo/community


More information about the Insight-users mailing list