|
From: | Activecat |
Subject: | Re: [Discuss-gnuradio] FFTW3 runtime error |
Date: | Tue, 4 Mar 2014 14:27:29 +0800 |
But when I run the flow graph in GRC, it produces following error message.Then I integrate the FFT function into the block, it compiles without any error.I use FFTW3, the FFT stuff runs well as a standalone program before integrating into gnuradio.Dear Sir,I am trying to build a custom block with FFT capability.
Generating: "/home/sgku/gnuradio/flow_graphs/top_block.py"
Executing: "/home/sgku/gnuradio/flow_graphs/top_block.py"
Traceback (most recent call last):
File "/home/sgku/gnuradio/flow_graphs/top_block.py", line 18, in <module>
import activecat
File "/usr/local/lib/python2.7/dist-packages/activecat/__init__.py", line 45, in <module>
from activecat_swig import *
File "/usr/local/lib/python2.7/dist-packages/activecat/activecat_swig.py", line 26, in <module>
_activecat_swig = swig_import_helper()
File "/usr/local/lib/python2.7/dist-packages/activecat/activecat_swig.py", line 22, in swig_import_helper
_mod = imp.load_module('_activecat_swig', fp, pathname, description)
ImportError: /usr/local/lib/libgnuradio-activecat.so: undefined symbol: fftw_plan_dft_1d
>>> DoneBelow is the implmentation source file:
namespace gr {
namespace activecat {
fft1::sptr
fft1::make(int fft_size, int direction, bool fft_shift)
{
return gnuradio::get_initial_sptr
(new fft1_impl(fft_size, direction, fft_shift));
}
// constructor
fft1_impl::fft1_impl(int fft_size, int direction, bool fft_shift)
: gr::sync_block("fft1",
gr::io_signature::make( 1, 1, sizeof(gr_complex)),
gr::io_signature::make( 1, 1, sizeof(gr_complex))),
d_N(fft_size),
d_direction(direction),
d_shift(fft_shift)
{
d_input = (fftw_complex*) fftw_malloc( sizeof(fftw_complex) * d_N );
d_plan = fftw_plan_dft_1d( d_N, d_input, d_input, FFTW_BACKWARD, FFTW_ESTIMATE ); // later change FFTW_BACKWARD to d_direction
set_output_multiple( d_N );
set_min_noutput_items( d_N );
}
// destructor
fft1_impl::~fft1_impl()
{ }
int
fft1_impl::work(
int noutput_items,
gr_vector_const_void_star &input_items,
gr_vector_void_star &output_items)
{
const gr_complex *in = (const gr_complex *) input_items[0];
gr_complex *out = (gr_complex *) output_items[0];
for (int i=0; i < noutput_items; i++)
{
d_input[i][0] = in[i].real();
d_input[i][1] = in[i].imag();
}
fftw_execute( d_plan );
for (int i=0; i < noutput_items; i++)
{
out[i].real( d_input[i][0] );
out[i].imag( d_input[i][1] );
}
return noutput_items;
}
} /* namespace activecat */
} /* namespace gr */
Question:
How to solve this error ?
Regards,
Activecat
[Prev in Thread] | Current Thread | [Next in Thread] |