Dear experts,

Im not able to rub my application it gives me errors to read exif from picture/img

Code:
class CFbsBitmap;
class CExifRead;
class CImageDecoder;
/**
 *  CExif_reader
 * 
 */
class CExif_reader : public CBase
	{
public:
	// Constructors and destructor

	/**
	 * Destructor.
	 */
	~CExif_reader();
	
	/**
	 * Two-phased constructor.
	 */
	static CExif_reader* NewL();

	/**
	 * Two-phased constructor.
	 */
	static CExif_reader* NewLC();
	 void read_exf(TDesC16 & filename);
	
	
private:
	
	
	/**
	 * Constructor for performing 1st stage construction
	 */
	
	CExif_reader();
	/**
	 * EPOC default constructor for performing 2nd stage construction
	 */
	void ConstructL();
	
private:
	TFileName iFile;
	RFs rFile;
	HBufC8 * iImageMake;  // to get the make of the image
	HBufC8 * iImageModel; // to get the model of the image
	HBufC8 * iImageDate; //to get the date of the image
	CExifRead* read;
	CFbsBitmap * bitmap;
	const HBufC16* path;
	CImageDecoder* readFile;

	};

#endif // EXIF_READER_H
.cpp
Code:
/*
 ============================================================================
 Name		: Exif_reader.cpp
 Author	  : Mohamed Khalel
 Version	 : 1.0
 Copyright   : This application has been developed by Mohamed Khalel

 Description : CExif_reader implementation
 ============================================================================
 */

#include "Exif_reader.h"
#include <exifread.h>
#include <exifmodify.h>
#include <f32file.h>
#include <eikenv.h>
#include <fbs.h>
#include <ImageConversion.h>

CExif_reader::CExif_reader()
	{
	// No implementation required
	}

CExif_reader::~CExif_reader()
	{
	}

CExif_reader* CExif_reader::NewLC()
	{
	CExif_reader* self = new (ELeave) CExif_reader();
	CleanupStack::PushL(self);
	self->ConstructL();
	return self;
	}

CExif_reader* CExif_reader::NewL()
	{
	CExif_reader* self = CExif_reader::NewLC();
	CleanupStack::Pop(); // self;
	return self;
	}

void CExif_reader::ConstructL()
	{

	}

void CExif_reader::read_exf(TDesC16 &filename)
	{
	RFile file;
		
		
	
		User::LeaveIfError(file.Open(CEikonEnv::Static()->FsSession(),filename,EFileRead));
		CleanupClosePushL(file);
		TInt size = 0;
		file.Size(size);
		HBufC8* exif_info = HBufC8::NewL(size);
		CleanupStack::PushL(exif_info);
		TPtr8 buffer = exif_info->Des();
		User::LeaveIfError(file.Read(buffer));
		CleanupStack::Pop(exif_info);
		CleanupStack::PopAndDestroy();
		CleanupStack::PushL(exif_info);

		CExifRead * exif_reader = CExifRead::NewL(exif_info->Des());
		CleanupStack::PushL(exif_reader);

		TInt err = KErrNone ;
		TRAP (err,iImageMake =  exif_reader->GetMakeL())
		TRAP (err,iImageModel = exif_reader->GetModelL());
		TRAP (err,iImageDate = exif_reader->GetDateTimeOriginalL());

		CleanupStack::PopAndDestroy(exif_reader);
		CleanupStack::PopAndDestroy(exif_info);

	
	
	
	
	}
Console
Code:
/*
 ============================================================================
 Name		: Exif_consol.cpp
 Author	  : Mohamed Khalel
 Copyright   : This application has been developed by Mohamed Khalel

 Description : Exe source file
 ============================================================================
 */

//  Include Files  

#include "Exif_consol.h"
#include <e32base.h>
#include <e32std.h>
#include <e32cons.h>			// Console
#include "Exif_reader.h"


//  Constants

_LIT(KTextConsoleTitle, "Console");
_LIT(KTextFailed, " failed, leave code = %d");
_LIT(KTextPressAnyKey, " [press any key]\n");

//  Global Variables



LOCAL_D CConsoleBase* console; // write all messages to this



//  Local Functions

LOCAL_C void MainL()
	{
	//
	// add your program code here, example code below
	//
	console->Write(_L("Hello, world!\n"));
	_LIT( path1,"C://img.jpg");

	TDesC16 path_file = path1.operator const TDesC16 &();
	
	
	
	CExif_reader * read = CExif_reader::NewL();
	read->read_exf(path_file);
	}

LOCAL_C void DoStartL()
	{
	// Create active scheduler (to run active objects)
	CActiveScheduler* scheduler = new (ELeave) CActiveScheduler();
	CleanupStack::PushL(scheduler);
	CActiveScheduler::Install(scheduler);

	MainL();

	// Delete active scheduler
	CleanupStack::PopAndDestroy(scheduler);
	}

//  Global Functions

GLDEF_C TInt E32Main()
	{
	// Create cleanup stack
	__UHEAP_MARK;
	CTrapCleanup* cleanup = CTrapCleanup::New();

	// Create output console
	TRAPD(createError, console = Console::NewL(KTextConsoleTitle, TSize(
			KConsFullScreen, KConsFullScreen)));
	if (createError)
		{
		delete cleanup;
		return createError;
		}

	// Run application code inside TRAP harness, wait keypress when terminated
	TRAPD(mainError, DoStartL());
	if (mainError)
		console->Printf(KTextFailed, mainError);
	console->Printf(KTextPressAnyKey);
	console->Getch();

	delete console;
	delete cleanup;
	__UHEAP_MARKEND;
	return KErrNone;
	}