require 'dl/import' module CRC extend DL::Importable dlload './libcrc.so' extern 'unsigned long get_crc_table(unsigned long)' extern 'void calc_crc_table()' extern 'void set_poly(unsigned long)' extern 'unsigned long iter_crc(unsigned long, unsigned long)' extern 'unsigned long inv_iter_crc(unsigned long, unsigned long)' extern 'unsigned long calc_crc(unsigned char *, unsigned long, unsigned long)' extern 'unsigned long solve(unsigned char *, unsigned long, unsigned long, unsigned long)' extern 'unsigned long not(unsigned long)' calc_crc_table end