Здравствуйте.
Есть одна программа, в которой выполняется чтение 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. В чем тут может быть дело?