[i386/Carbon]DLOG ressource et i386 Mac

Didier Guillion

Membre expert
Club iGen
20 Juillet 2001
3 244
164
62
Toulouse
www.myriad-online.com
Bonjour,

Je me suis cassé la tete un bon moment sur un probleme d'execution d'un programme Carbon, compilé pour MacIntel et qui ne trouvait pas certaines ressources DLOG dans les fichiers ressources.

Je donne la solution ici, car je pense que cela pourra etre utile a certain.

Apparemment le convertisseur de ressource de Mac OS X a un probleme si la taille de la ressource DLOG est impaire (!!!). Il suffit de creer son propre convertisseur tout au debut de l'appli:
Bloc de code:
/*********************************************************************
                        MyFlipDLOG
Convertit une ressource DLOG Motorola=>Intel
********************************************************************/
static OSStatus MyFlipDLOG(OSType dataDomain,OSType dataType,short id,void * dataPtr, UInt32 dataSize,Boolean currentlyNative, void* refcon)
{
Ptr p=dataPtr;
short i;

for(i=0;i<5;i++)
	{
	*(short*)p=wintel2moto(*(short*)p);
	p=p+sizeof(short);
	}
p+=4;
*(long*)p=wintel2moto(*(long*)p);
p=p+sizeof(long);
*(short*)p=wintel2moto(*(short*)p);
p=p+sizeof(short);
return(noErr);
}
/*********************************************************************
                        InstallResourceConverter
Installe le convertisseur de resource DLOG : celui de 10.4 est buggué                       
********************************************************************/
void InstallResourceConverter(void)
{
OSStatus err;

err=CoreEndianInstallFlipper(kCoreEndianResourceManagerDomain,'DLOG',MyFlipDLOG,NULL);
}

Cordialement