![](/img/trans.png)
[英]Trying to write low-level bit library, but I get an error, or garbage when trying to cast byte struct to char type
[英]Get error in the iffw library when trying to write chunk
當我嘗試使用EA iffw.c庫編寫IFF文件時,我無法通過StartWGroup()調用。 由於context-> ckHdr.ckSize為零,因此它在IFFWriteBytes()中失敗。 在IFFWriteBytes()內部有一個if()來檢查(size)!= szNotYetKnown。 (szNotYetKnown是一個常數。)該示例似乎表明它應該工作,但我看不到如何。 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和許多其他格式是IFF還是稍有變化 ?
更新 : 易於閱讀的IFF描述 。
我並不聲稱對這個特定的庫一無所知,而是查看函數參數,我認為您可能在StartWGroup中輸入了錯誤的大小。
從iifw.cpp: IFFP StartWGroup( GroupContext* parent, int groupType,int groupSize,int subtype, GroupContext * newtmp)
, IFFP StartWGroup( GroupContext* parent, int groupType,int groupSize,int subtype, GroupContext * newtmp)
的第三個參數名稱是StartWGroup
, groupSize
指示組LIST
的大小,而不是子組的大小sizeof(ID_NATAMI_FLASH)
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.