Разница в чтении файла в i386 и amd64
От: NordWest Россия  
Дата: 07.07.11 07:15
Оценка:
Здравствуйте.
Есть одна программа, в которой выполняется чтение tiff файла. Код такой:

{
printf("Reading TIFF header...\n");
struct 
   {
   unsigned short tag,type;
   unsigned long n,val;
   } tag;
unsigned short magic,n_tags;
unsigned long ifd;
char c,flag1=0;

fread(&c,1,1,F);
if (c!='I') die ("Unsupported format!");
   
fread(&c,1,1,F);
if (c!='I') die ("Unsupported format!");
   
fread(&magic,1,2,F);
if (magic != 42) die ("Unsupported format!");
   
fread(&ifd,1,4,F);
fseek(F, ifd, SEEK_SET);
fread(&n_tags,1,2,F);

FOR(i,0,n_tags)
   {
   fread(&tag,1,12,F);
   if (tag.tag == 256) xm = tag.val;
   if (tag.tag == 257) ym = tag.val;
   if (tag.tag == 273) start = tag.val;
   if (tag.tag == 273 && tag.n > 1) flag1 = 1;   
   }
if (flag1)   
   {
   printf("Number of strips > 1 \n");
   fseek(F, start, SEEK_SET);
   fread(&start, 1, SL, F);
   }


Два компьютера с Debian 6, но разными архитектурами: i386 и amd64. Собирается одинаково:

g++ -c -o prog.obj prog.cpp
g++ -o prog.exe prog.obj -lgsl -lc -lm -lgslcblas


Но на i386 всё работает правильно, а на amd64 чтение тэгов происходит неправильно. В частности величины xm и ym оказываются равны 0. В чем тут может быть дело?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.