From: Saumya Garg Date: 2004-08-19T05:35:56+09:00 Subject: Module Extension problem I am trying to write a Module written in C for ruby to help me do some image processing. I get the following error when I try to run my code. processImg.rb:7:in `OpenFile': cannot convert Module into String (TypeError) from /home/usr/johnDoe/processImg.rb:7 Below is a simplified example of my code that generates the same error. C code: #include #include #include "ruby.h" static VALUE getFile(VALUE nameFile){ char *fileName = STR2CSTR(nameFile); FILE *pFile; long lSize; float *buffer; pFile = fopen (fileName, "rb" ); // obtain file size. fseek (pFile , 0 , SEEK_END); lSize = ftell (pFile); rewind (pFile); buffer = (float*) malloc (lSize); // copy the file into the buffer. fread (buffer,1,lSize,pFile); fclose (pFile); VALUE data = Data_Make_Struct(data,float,0,free, buffer); return data; } static VALUE writeFile(VALUE data, VALUE nameFile){ float *img; Data_Get_Struct(data, float, img); char *fileName = STR2CSTR(nameFile); FILE * pFile; int sizeFloat = sizeof(float); int numberFloats = sizeof(*img) / sizeFloat; pFile = fopen (fileName , "w"); fwrite (img, sizeFloat,numberFloats, pFile); fclose (pFile); free (img); return Qnil; } static VALUE cImageFile; void Init_Image_File(){ cImageFile = rb_define_module("Image_File"); rb_define_module_function(cImageFile,"OpenFile",getFile,1); rb_define_module_function(cImageFile,"WriteFile",writeFile,2); rb_define_module_function(cImageFile,"FreeMem",freeMem, 1); } Ruby Code: require 'Image_File' imageName = ARGV[0] newImageName = ARGV[1] puts (imageName) data = Image_File.OpenFile(imageName) Image_File.WriteFile(data, newImageName) Thanks in advance for your help.