当我尝试使用EA iffw.c library编写IFF文件时,我无法通过StartWGroup()调用。它在IFFWriteBytes()中失败,因为context-> ckHdr.ckSize为零。在IFFWriteBytes()内部有一个if()来检查(size)!= szNotYetKnown。 (szNotYetKnown是一个常数。)example似乎表明它应该工作,但是我看不到如何。
IFFWriteBytes()返回CLIENT_ERROR,因为nBytes为4-我正在尝试保存32位int。
我失败的代码:
outfp = fopen(outfile, "wb");
ifferr = OpenWIFF(outfp, &filec, szNotYetKnown);
if (ifferr) {
return 2;
}
ifferr = StartWGroup(&filec, LIST, sizeof (ID_NATAMI_FLASH), ID_NATAMI_FLASH, &listc);
if (ifferr) {
printf("ifferr: %d\n", ifferr);
return 3;
}
最后一个失败,StartWGroup()。
IFF和XML一样简单,可以不用一个库就可以生成它,但是最好使用曾经很常见且经过良好测试的库。
问题不是关于Amiga的,而是这种文件格式在Amiga上很流行。顺便问一下,您知道DjVU,RMFF,AIFF, RIFF and many other formats are IFF or slight variations吗?
更新:easy to read IFF description。
最佳答案
我并不声称对这个特定的库一无所知,而是查看函数参数,我认为您可能在StartWGroup中输入了错误的大小。
在iifw.cpp:IFFP StartWGroup( GroupContext* parent, int groupType,int groupSize,int subtype, GroupContext * newtmp)
中,StartWGroup
的第三个参数名称是groupSize
,指示组LIST
的大小,而不是子组大小sizeof(ID_NATAMI_FLASH)
。
关于c - 尝试编写块时在iffw库中获取错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8919368/