EA iffw.c library을 사용하여 IFF 파일을 쓰려고 할 때 StartWGroup() 호출을 지나칠 수 없습니다. context-> ckHdr.ckSize가 0이므로 IFFWriteBytes()에서 실패합니다. IFFWriteBytes() 안에는 (size)! = szNotYetKnown을 검사하는 if()가 있습니다. (szNotYetKnown은 상수입니다.) example은 작동해야한다고 생각하는 것처럼 보이지만 어떻게 볼 수는 없습니다. IFFWriteBytes()는 nBytes가 4이므로 CLIENT_ERROR를 반환합니다. 32 비트 정수를 저장하려고합니다.청크를 쓰려고 할 때 iffw 라이브러리에서 오류 가져 오기
내 고장 코드 :
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은 EndWGroup()을 사용하여 "닫아야"하는 그룹 (XML 요소와 같은 그룹)을 시작한다고 제안하는 것 같습니다. 당신은 StartWGroup()을 사용하여 "틀린 것"으로 보이는 32 비트 정수를 쓰고 있다고 말하는 것 같습니다 - 제가 빠진 것이 있습니까? – John3136
EndWGroup이 닫힙니다. 그러나이 프로그램은 아주 멀리 떨어져 있어도 실패합니다. (EndWGroup은 끝 태그도 쓰지 않고 대신에 청크 길이를 업데이트합니다. 그래서 EA 라이브러리는 기본적으로 끝 태그를 쓰는 XML과 비슷한 API를 만듭니다. –
그렇지 않습니다. Cpp 질문? 연결 지점이 iifw.cpp가 아닌 iifw.c입니다. – AoeAoe