# Librairie Statique Xcode 4



## DevPayeur (26 Avril 2012)

Bonjour,
Je travaille actuellement sur une application Iphone et j'ai besoin pour cela d'utiliser une librairie statique ( libmailcore.a)
Celle-ci est correctement ajoutée a mon projet car elle n&#8217;apparaît pas en rouge.
Cependant la ligne "#import <MailCore/MailCore.h>" génère l'erreur suivante : file nor found.
Pourtant, mon "user header search path" est le suivant : /Users/moi/MailCore (bref, le chemin d&#8217;accès vers le projet qui contient le fameux MailCore.h que j'aimerai réutiliser.

Faut-il ajouter carement le header dans mon nouveau projet ?


----------



## Nyx0uf (26 Avril 2012)

```
#import <MailCore/MailCore.a>
```

Vraiment ?


----------



## DevPayeur (26 Avril 2012)

OUps, .h excusez moi, j'ai corrigé


----------



## tatouille (27 Avril 2012)

/Users/moi/MailCore 

-I /Users/moi

#include <MailCore/MailCore.h>

peux tu changer le titre "débutant en C, je ne sais pas gérer les includes aidez moi"?


----------



## DevPayeur (27 Avril 2012)

Fais pas le malin, bien sur que je suis débutant, mais c'est pas include c'est import et c'est pas du C mais de l'objective C.
J'ai résolu mon pb, dsl pour ton include, le pb était simplement d'ajouter " libiconv.dylib" dans mon projet.


----------



## tatouille (27 Avril 2012)

Bonjours mon petit lapin,

import n'est juste que "features" héritée de gcc deja presente il y a bien longtemps  tu n'etais pas née, ca t'evite de "garder" tes headers pour les multiples references exemple



```
//
//  TATByteOrder.h
//
//  Copyright (C) 2012 Tatouille. All rights reserved.
//

#include <stdio.h>
#include <stdint.h>

#ifndef TATBYTEORDER_H
#define TATBYTEORDER_H

//#! portable byte swapping

#ifndef TATSwapConstInteger16
#define TATSwapConstInteger16(value) \
  (((uint16_t) ((value) & 0xff) << 8) | ((uint16_t) (value) >> 8))
#endif

#ifndef TATSwapConstInteger32
#define TATSwapConstInteger32(value) \
  (((uint32_t) TATSwapConstInteger16(((value) & 0xffff)) << 16) | \
    (uint32_t) TATSwapConstInteger16(((value) >> 16)))
#endif

#ifndef TATSwapConstInteger64
#define TATSwapConstInteger64(value) \
  (((uint64_t) TATSwapConstInteger32(((value) & 0xffffffff)) << 32) | \
    (uint64_t) TATSwapConstInteger32(((value) >> 32)))
#endif

#if defined(__APPLE__) && !(TARGET_OS_EMBEDDED || TARGET_OS_IPHONE || TARGET_OS_IPAD)
	#include <libkern/OSByteOrder.h>
	#define PLATFORM_MACOS_BYTEORDER 1
#elif defined(__LINUX__)
	#include <endian.h>
#endif

#if TARGET_OS_EMBEDDED || TARGET_OS_IPHONE || TARGET_OS_IPAD
	#undef PLATFORM_MACOS_BYTEORDER
	#define PLATFORM_HOST_BYTEORDER 1
#endif

#if TARGET_OS_EMBEDDED || TARGET_OS_IPHONE || TARGET_OS_IPAD && !defined(__LITTLE_ENDIAN__)
	#define __LITTLE_ENDIAN__ 1
#endif

#if (defined(__WIN32__) || defined(__MINGW32__)) && !defined(__LITTLE_ENDIAN__)
	#define __LITTLE_ENDIAN__ 1
#endif

#if (defined(NETBSD) || defined(__FreeBSD__) || defined(DRAGONFLY)) && !defined(__BSD__)
	#define __BSD__ 1
#endif

#if defined(__BSD__)
	#include <sys/param.h>
	#include <machine/endian.h>
#endif

#if defined(BYTE_ORDER) && !defined(__LITTLE_ENDIAN__)
	#if(BYTE_ORDER == LITTLE_ENDIAN)
		#define __LITTLE_ENDIAN__ 1
	#endif
#endif

#if defined(__BYTE_ORDER) && !defined(__LITTLE_ENDIAN__)
	#if(__BYTE_ORDER == __LITTLE_ENDIAN)
		#define __LITTLE_ENDIAN__ 1
	#endif
#endif

static inline 
uint32_t TATSwapInteger32(const volatile uint32_t x)
{
#if defined(PLATFORM_MACOS_BYTEORDER)
	return OSSwapInt32(x);
#elif defined(__GNUC__) || defined(__LLVM__) || defined(__ITLC__) && !defined(PLATFORM_HOST_BYTEORDER)
	return __builtin_bswap32(x);
#elif defined(__WIN32__) && defined(__MSC__) && !defined(PLATFORM_HOST_BYTEORDER)
	return _byteswap_ulong(x);
#elif defined(__i386__) || defined(__x86_64__) && !defined(PLATFORM_HOST_BYTEORDER)
	__asm__ __volatile__("bswap %0" : "+r" (x));
	return x;
#else
	uint32_t result;
	result = ((x & 0xFF) << 24) | ((x & 0xFF00) << 8) | ((x >> 8) & 0xFF00) | ((x >> 24) & 0xFF);
	return result;
#endif
}

static inline 
uint64_t TATSwapInteger64(const volatile uint64_t x)
{
#if defined(PLATFORM_MACOS_BYTEORDER)
	return OSSwapInt64(x);
#elif defined(__GNUC__) || defined(__LLVM__) || defined(__ITLC__) && !defined(PLATFORM_HOST_BYTEORDER)
	return __builtin_bswap64(x);
#elif defined(__WIN32__) && defined(__MSC__) && !defined(PLATFORM_HOST_BYTEORDER)
	return _byteswap_uint64(x);
#elif defined(__i386__) && !defined(__x86_64__) && !defined(PLATFORM_HOST_BYTEORDER)
	__asm__ __volatile__("bswap %%eax\n\t"
		"bswap %%edx\n\t" 
		"xchgl %%eax, %%edx"
		: "+A" (x)
	);
	return x;
#elif defined(__x86_64__) && !defined(PLATFORM_HOST_BYTEORDER)
	__asm__ __volatile__("bswap %0" : "+r" (x));
	return x;
#else
	union swap { uint64_t sv; uint32_t ul[2]; } tmp, result;
	tmp.sv = x;
	result.ul[0] = TATSwapInteger32(tmp.ul[1]); 
	result.ul[1] = TATSwapInteger32(tmp.ul[0]);
	return result.sv;
#endif
}

/*** more stuff here ***/

#endif /* !TATBYTEORDER_H */

/* EOF */
```

live performance :love: je fais mon malin mdr!!!!!!!!! (8 heures du mat :love:, le vieux malin il tient toujours la route :love:, juste passé la nuit sous verilog finalement corrigé cette merde de firmware)

pour l'objective C du m'apprend bien des choses mon petit caramel :rose::love:, de plus s'accordant a l'erreur que tu as donnée et non celle d'une erreur de linker qui indiquerait l'absence de symboles contenus dans une lib tiers lors du linkage dynamique,

NB: pour ta culture:

Objective-C is a reflective, object-oriented programming language that adds Smalltalk-style messaging to the C programming language.

revenons au sujet:

donc s'accordant aux deux informations que tu donnes ton "include path" était mauvais: un niveau trop profond 

-I/include/path/MailCore qui devrait etre -I/include/path pour que le sous dossier MailCore soit trouvé, 

je réintere donc ma requete peux tu changer le titre car cela n'a aucun rapport avec l'ajout d'une lib static.
donc je te pris de relire ton message et de le corriger avant une sortie malheureusement prématurée.


----------

