Hello!
I’ve been using the examples from “how to write a block” as a base to
create
my own.
Using one of them a created some kind of sink. In it I added some
auxiliary
function accessible from the outside in order to get the values from the
buffer. So far so good…
With the other one I made a file sink, which stores some statistics
calculated on the block. Then I went to add a simple function just to
close
the current file and open a new one every few hours.
What happens is that I followed the same procedure to add the sub
function
to be accessible from the outside, and for some reason I can’t seem to
find
it gives me an error which I never seen on the other one.
The procedure I used on the other was this:
- On the header define the function as public
- After the my_class::work() define the function and the code
- On the howto.i add the function as in header file
I don’t know if this was correct but it worked on the first one.
I hope you can help me. Thanks in advance!
Next is the errors and the code:
#--------------------------------------------------------------#
ERROR:
Traceback (most recent call last):
File “Acquisition.py”, line 4, in
from gnuradio import usrp, howto
File “/usr/local/lib/python2.5/site-packages/gnuradio/howto.py”, line
6,
in
import _howto
ImportError: /usr/local/lib/python2.5/site-packages/gnuradio/_howto.so:
undefined symbol: _ZN16howto_co_cx_stat14create_new_logEPc
#-------------------------------------------------------------------------------#
HOWTO.I
GR_SWIG_BLOCK_MAGIC(howto,co_cx_stat);
howto_co_cx_stat_sptr howto_make_co_cx_stat ( unsigned int vector_size,
unsigned int sampling,
unsigned int fftsize,
char *filename);
class howto_co_cx_stat : public gr_block
{
private:
howto_co_cx_stat (unsigned int vector_size,
unsigned int sampling,
unsigned int fftsize,
char *filename);
public:
int create_new_log(char file_name[255]); // REFERENCE //
};
#-------------------------------------------------------------------------------#
HOWTO_CO_CX.H
class howto_co_cx_stat : public gr_block
{
//private:
// The friend declaration allows howto_make_co_cx_stat to
// access the private constructor.
friend howto_co_cx_stat_sptr howto_make_co_cx_stat (unsigned int
vector_size,
unsigned int sampling,
unsigned int
fftsize,char *filename);
howto_co_cx_stat (unsigned int vector_size,
unsigned int sampling,
unsigned int fftsize,
char *filename); // private
constructor
unsigned int d_vector_size;
unsigned int d_sampling;
unsigned int d_fftsize;
char d_filename[255];
std::vector<gr_complex> band100_CO;
std::vector<gr_complex> band100_CX;
std::vector<gr_complex> band4000_Noise;
std::vector band100_CXi;
std::vector band100_CXq;
float amp_co, amp_cx, phase;
FILE *file;
MATLAB_MATRIX_HEADER header;
public:
~howto_co_cx_stat (); // public destructor
int general_work (int noutput_items,
gr_vector_int &ninput_items,
gr_vector_const_void_star &input_items,
gr_vector_void_star &output_items);
int create_new_log(char file_name[255]); // DESIRED FUNCTION //
};
#---------------------------------------------------------------------------------#
HOW_CO_CX.CC
(…default stuff…)
int
howto_co_cx_stat::general_work (int noutput_items,
gr_vector_int &ninput_items,
gr_vector_const_void_star &input_items,
gr_vector_void_star &output_items)
{
(…work…)
}
int create_new_log(char file_name[255])
{
printf(“\n\n\name changed!!!\n\n\n”);
printf(“\nFile 1 C++: %s”, file_name);
return 0;
}
View this message in context:
http://www.nabble.com/How-to-write-a-block---Error-adding-sub-function-to-a-block-tp23740353p23740353.html
Sent from the GnuRadio mailing list archive at Nabble.com.