Hi Ben,
I didn't find my error, so i decide to proceed with another method: I use a project which works. I create the file : rfid_file.cc and rfid_file.h I modify the file rfid.i I use the command: ./boostrap ./configure ./make ./make configure And i have no errors :-), But i have an error after that, when i import my block in my file .py. * Traceback (most recent call last): File "./test.py", line 20, in <module> from gnuradio import rfid File "/usr/local/lib/python2.7/dist-packages/gnuradio/rfid.py", line 24, in <module> _rfid = swig_import_helper() File "/usr/local/lib/python2.7/dist-packages/gnuradio/rfid.py", line 20, in swig_import_helper _mod = imp.load_module('_rfid', fp, pathname, description) ImportError: /usr/local/lib/python2.7/dist-packages/gnuradio/_rfid.so: undefined symbol: _Z14rfid_make_fileiP5state * Do you know why? - *This is my file: rfid_file.cc* *#ifdef HAVE_CONFIG_H #include <config.h> #endif #include <rfid_file.h> #include <gr_io_signature.h> #include <stdlib.h> #include <string.h> #include <stdio.h> #ifndef READER_VARS #include "reader_vars.h" #endif #include <sys/time.h> #include <float.h> #include <signal.h> #include <math.h> bool trigger_next_cycle = false; static itimerval timer; rfid_file_sptr rfid_make_file(int dec2, state * reader_state2) { return rfid_file_sptr(new rfid_file(dec2, reader_state2)); } rfid_file::rfid_file(int dec2, state * reader_state2): gr_block("rfid_file", gr_make_io_signature (1, 1, sizeof(float)), gr_make_io_signature (1,1,sizeof(float))) { printf("test1"); } rfid_file::~rfid_file() { } int rfid_file::general_work(int noutput_items, gr_vector_int &ninput_items, gr_vector_const_void_star &input_items, gr_vector_void_star &output_items) { const float * in = (const float *)input_items[0]; float * out = (float * )output_items[0]; int nout = 0; int debug_out_cnt = 0; out[0] = in[0]; consume_each(noutput_items); printf("test2"); return nout; } void rfid_file::forecast (int noutput_items, gr_vector_int &ninput_items_required) { unsigned ninputs = ninput_items_required.size (); for (unsigned i = 0; i < ninputs; i++){ ninput_items_required[i] = noutput_items; } }* - *This is my file rfid_file.h* *#ifndef INCLUDED_RFID_FILE_H #define INCLUDED_RFID_FILE_H #include <gr_block.h> #include <gr_message.h> #include <gr_msg_queue.h> #include "reader_vars.h" class rfid_file; typedef boost::shared_ptr<rfid_file> rfid_file_sptr; rfid_file_sptr rfid_make_file (int dec2, state * reader_state2 ); class rfid_file : public gr_block { private: friend rfid_file_sptr rfid_make_file(int dec2, state * reader_state2); rfid_file(int dec2, state * reader_state2); state * d_reader_state2; void forecast (int noutput_items, gr_vector_int &ninput_items_required); public: ~rfid_file(); int general_work(int noutput_items, gr_vector_int &ninput_items, gr_vector_const_void_star &input_items, gr_vector_void_star &output_items); }; #endif* - *And this is my file: rfid.i* *%include "exception.i" %include "gnuradio.i" // the common stuff %{ #include "gnuradio_swig_bug_workaround.h" // mandatory bug fix #include "rfid_clock_recovery_zc_ff.h" #include "rfid_cmd_gate.h" #include "rfid_gen2_reader.h" #include "rfid_reader_decoder.h" #include "rfid_file.h" %} //----------------------------------------------------------------- GR_SWIG_BLOCK_MAGIC(rfid, reader_decoder); rfid_reader_decoder_sptr rfid_make_reader_decoder (float us_per_sample, float tari); class rfid_reader_decoder: public gr_sync_block{ rfid_reader_decoder (float us_per_sample, float tari); public: ~rfid_reader_decoder(); gr_msg_queue_sptr get_log() const; }; //----------------------------------------------------------------- GR_SWIG_BLOCK_MAGIC(rfid, cmd_gate); rfid_cmd_gate_sptr rfid_make_cmd_gate (int dec, state * reader_state); class rfid_cmd_gate: public gr_block{ rfid_cmd_gate (int dec, state * reader_state); public: ~rfid_cmd_gate(); }; //----------------------------------------------------------------- GR_SWIG_BLOCK_MAGIC(rfid, file); rfid_file_sptr rfid_make_file (int dec2, state * reader_state2); class rfid_file: public gr_block{ rfid_file (int dec2, state * reader_state2); public: ~rfid_file(); }; //----------------------------------------------------------------- GR_SWIG_BLOCK_MAGIC(rfid, gen2_reader); rfid_gen2_reader_sptr rfid_make_gen2_reader (int dec, int interp, int miller, bool elg, int dev_corr); class rfid_gen2_reader: public gr_block{ rfid_gen2_reader (int dec, int interp, int miller, bool elg, int dev_corr); public: ~rfid_gen2_reader(); state * STATE_PTR; gr_msg_queue_sptr get_log() const; }; //----------------------------------------------------------------- GR_SWIG_BLOCK_MAGIC(rfid, clock_recovery_zc_ff); rfid_clock_recovery_zc_ff_sptr rfid_make_clock_recovery_zc_ff(int samples_per_pulse, int interp_factor, float us_per_sample, float blf, bool elg); class rfid_clock_recovery_zc_ff: public gr_block{ rfid_clock_recovery_zc_ff(int samples_per_pulse, int interp_factor, float us_per_sample, float blf, bool elg); public: ~rfid_clock_recovery_zc_ff(); }; * Btw, thank you a lot for your help! Le 16 mars 2012 14:18, Ben Hilburn <b...@ettus.com> a écrit : > Sorry, last e-mail should have said, "Check out Martin's and Zhonghua's > advice..." > > Cheers, > Ben > > On Fri, Mar 16, 2012 at 10:17 AM, Ben Hilburn <b...@ettus.com> wrote: > >> Aha - you suspect a SWIG error? That may indeed be the issue. >> >> Check out Martin's advice, and let us know how it goes. Have you >> generally tested the SWIG for your class? >> >> Cheers, >> Ben >> >> >> On Fri, Mar 16, 2012 at 6:37 AM, Loic Danceg <loicdan...@gmail.com>wrote: >> >>> Hi Ben >>> >>> Thank you for your help. >>> I am really familiar with Python, i think is more an error with the file >>> .i or another error but i don't find my error :-( >>> >>> Le 14 mars 2012 21:34, Ben Hilburn <b...@ettus.com> a écrit : >>> >>> Loic - >>>> >>>> That is a Python error, telling you that your class 'rfid' doesn't have >>>> the member 'test'. This is an error in your code. >>>> >>>> How familiar are you with Python? You may want to read up on some >>>> Python documentation to help you understand how that all works. >>>> >>>> http://docs.python.org/tutorial/classes.html >>>> >>>> Cheers, >>>> Ben >>>> >>>> >>>> >>>> On Tue, Mar 13, 2012 at 9:37 AM, Loic Danceg <loicdan...@gmail.com>wrote: >>>> >>>>> Hi everybody! >>>>> >>>>> I try to create my own block in a current project (rfid). So there are >>>>> currently other blocks which works correctly. >>>>> I had create my file.cc, my file.h and add the part that i need to add >>>>> in the file rfid.i >>>>> >>>>> After that, I enter the following command line: >>>>> >>>>> ./configure >>>>> make >>>>> make configure >>>>> >>>>> But when i use my application.py i have this error: >>>>> >>>>> *Traceback (most recent call last): >>>>> File "./test.py", line 215, in <module> >>>>> main () >>>>> File "./test.py", line 65, in main >>>>> tb = my_top_block() >>>>> File "./test.py", line 43, in __init__ >>>>> d1 = rfid.test() >>>>> AttributeError: 'module' object has no attribute 'test' >>>>> * >>>>> Someone know why? >>>>> >>>>> Thank you a lot for your time! >>>>> >>>>> >>>>> _______________________________________________ >>>>> Discuss-gnuradio mailing list >>>>> Discuss-gnuradio@gnu.org >>>>> https://lists.gnu.org/mailman/listinfo/discuss-gnuradio >>>>> >>>>> >>>> >>> >> >
_______________________________________________ Discuss-gnuradio mailing list Discuss-gnuradio@gnu.org https://lists.gnu.org/mailman/listinfo/discuss-gnuradio