# XCode : TinyXML



## NSKeyValueCoding (30 Août 2011)

Bonjour 

Je viens de finir de réaliser une application sous Windows qui utilise la librairie TinyXML (CPP).

Sous windows : 

- créer un projet de librairie statique : j&#8217;obtiens un .a  ( ou autre extension  sous max)
 - linker le .a au projet principal, le .h en include et tout fonctionne !

Je dois faire la même chose pour Mac donc sous XCode.

Dois-je procéder de la même manière que sous Windows ou il y a une  autre solution ? 

Si oui, que dois je faire sous Xcode ? 

Quand je fais nouveau projet je n'ai pas librairie statique C++ 

Merci         
(ps) je développe en WebObjects d'où mon pseudo.


----------



## Nyx0uf (30 Août 2011)

Le plus simple c'est de récupérer les sources de TinyXML et de les inclure dans ton projet.


----------



## NSKeyValueCoding (30 Août 2011)

Bonjour 

Je pensais que c'était plus propre de créer une lib mais effectivement c'est plus simple d'insérer juste la source dans le projet principale.

J'ai suivi ton conseil   Merci

J'ai une autre question sur le développement mac sous Xcode : 

En fait mon développement (en C++) n'est pas une application mais une librairie, sous windows j'ai créé une DLL mais sous mac il y a plusieurs type   (.Framework, .dylib...)

Ma librairie est sensé être utilisé dans une extension firefox à travers l'api JS-CTYPES : 

https://developer.mozilla.org/en/js-ctypes/Using_js-ctypes 

Dans leur exemple il y a bien une DLL (ça fonctionne super bien) mais pour le mac c'est un .framework

*Quel projet je dois construire dans XCODE pour avoir une libraire .Framework avec du C++  ? *

Merci


----------



## Nyx0uf (30 Août 2011)

Xcode -> Nouveau projet -> Cocoa Framework


----------



## NSKeyValueCoding (30 Août 2011)

Tu as un exemple d'utilisation de code (classe) C++ dans un framework Cocoa ?


----------



## ntx (30 Août 2011)

Tu peux faire une STL C++ Library, un .dylib.
Sinon j'ai fait un framework avec des .cpp à l'intérieur, ça n'a pas déranger Xcode plus que cela. Mais j'ai aussi des .mm dans ce projet ce qui a peut être forcé la compilation en Obj-C++.


----------



## NSKeyValueCoding (1 Septembre 2011)

Bonjour

j'ai essayé la dylib

js-ctypes n'arrive pas à l'ouvrir ... 

https://developer.mozilla.org/en/js-ctypes/Using_js-ctypes

Vous n&#8217;auriez pas un exemple simple de framework utilisant du code C++ ?

Merci


----------



## Nyx0uf (1 Septembre 2011)

Tu peux normalement utiliser C++ dans un framework, tu renommes les fichiers .m en .mm (Obj-C++) et ça devrait rouler.


----------



## NSKeyValueCoding (5 Septembre 2011)

Bonjour

J'ai créé un Framework en utiliser des .mm à la place des .cpp 

Ça compile mais Js-ctypes n'arrive pas à l'ouvrir.

Est ce que quelqu'un pourrait partager un projet valide de framework sous XCode 4 avec une simple fonction  pour que je puisse essayer ? 

Merci


----------



## ntx (5 Septembre 2011)

Et si de ton côté, tu te créais une petite appli qui exploiterait ton framework.  Parce que le problème ne vient peut être pas de la façon dont est fait le framework mais de la façon dont tu penses que ton Js-ctypes est sensé l'exploiter.


----------



## NSKeyValueCoding (6 Septembre 2011)

Sous Xcode, j'ai compilé une dylib en 32bit ... ca ne marche pas 

Je met le projet en 64bits :  ca fonctionne !!

Le problème est que dans ma librairie, je dois utiliser un framework compilé en 32 , donc quand je l'ajoute en 32bit ça tourne mais pas en 64 ...

J'ai essayer de créer une dylib sous Code:Blocks, ca fonctionne tout de suite dans Js-ctypes mais je ne sais pas comment ajouter de framework 

Du coup j'ai pas encore essayé cocoa en 64


----------



## ntx (6 Septembre 2011)

Il faut que tous les composants de ton framework ou de ta librairie soient dans la même architecture. Pas de miracle à espérer de ce côté là 

Un framework est un bundle donc un répertoire. Est-ce que ton Js-ctypes est prévu pour attaquer des librairies et/ou des frameworks ? Ce n'est pas du tout la même chose. 
Tu peux créer des librairies dynamiques C++ avec Xcode.


----------



## NSKeyValueCoding (9 Septembre 2011)

ntx a dit:


> Il faut que tous les composants de ton framework ou de ta librairie soient dans la même architecture. Pas de miracle à espérer de ce côté là
> 
> Un framework est un bundle donc un répertoire. Est-ce que ton Js-ctypes est prévu pour attaquer des librairies et/ou des frameworks ? Ce n'est pas du tout la même chose.
> Tu peux créer des librairies dynamiques C++ avec Xcode.



Bonjour

J'avais déjà utilisé des dylib mais ca ne fonctionnait pas parce que Firefox était en 64bit 

J'ai réussi à faire fonctionner le tout :

- Firefox lancé en 32bit
- dylib créé avec XCode à partir d'un projet C++ en 32bits avec compilateur GCC
- le .h supprimé et cp renomé en cpp et utilisation de code C à la place du C++ généré automatiquement dans le main et ajout d'un extern C {}  autour 

Ça fonctionne  

J'ai des problèmes d'encodage que je n'avais pas sous Windows  mais c'est pas grave réglerais ça plus tard


----------

