au link definir gcc-4.2 ou g++-4.2

Bonsoir

J'ai un problème de build particulièrement vicieux.

J'ai deux projet qui utilisent la même lib ; dans un projet le build fonctionne, et dans l'autre non.

Au link il y a des soucis avec std :

Undefined symbols:
  "std::basic_string<char, std::char_traits<char>, std::allocator<char> >::operator=(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)", referenced from: blablabla


En fouillant dans la compilation, j'ai trouvé que dans un cas il faisait le link avec g++-4.2 et dans l'autre gcc-4.2 :


Ld build/Debug-iphoneos/SPIKiosqueDemo.app/SPIKiosqueDemo normal armv7
cd /Users/xxx/Documents/Projects/iPhone/Demo/SPIKiosqueDemo
setenv IPHONEOS_DEPLOYMENT_TARGET 3.2
setenv PATH "/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin:/Developer/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin"
/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/g++-4.2



Ld build/Debug-iphoneos/KiosqueDemo.app/KiosqueDemo normal armv7
cd /Users/xxx/Documents/Projects/iPhone/Demo/BookCase+ImmKiosque
setenv IPHONEOS_DEPLOYMENT_TARGET 3.2
setenv PATH "/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin:/Developer/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin"
/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc-4.2


Donc comment préciser gcc ou g++ pour le linkage ?
A savoir que dans les setting des target, Compile Source As = According to File Type.

Merci de votre aide

D.H.


PS : Je suis sur xcode 3.2

Réponses

  • AliGatorAliGator Membre, Modérateur
    01:58 modifié #2
    std est une librairie C++

    Pour mélanger de l'Objective-C et du C++ il faut faire de l'Objective-C++

    Pour cela il suffit de renommer tes fichiers ".m" en ".mm", du coup vu que tu as "Compile Source As = According to File Type" ça va te les compiler en Objective-C++ donc avec le bon compilateur.
  • dream hopedream hope Membre
    01:58 modifié #3
    Hello

    Alors c'est exactement ce que je fais : une des classes de la lib importée est définit en .mm (car elle utilise du code c++).

    Mais dans les projets qui utilise cette lib, un coup ça link (compilateur g++-4.2) et un coup non.

    Le problème étant que je n'arrive pas à  avoir la main sur le paramètre qui permet de définir quel type de compilateur utiliser pour le link.

    Merci
  • dream hopedream hope Membre
    01:58 modifié #4
    Bon, ben :

    - dans mon projet 2 qui plante, j'ai redéfinis une class en *.mm et ça marche (pourtant dans la lib, j'ai déjà  un fichier *.mm);
    - alors que mon projet 1 qui n'a aucun fichier en *.mm et qui utilise la même lib fonctionne très bien...

    Comprend pas pourquoi.  B)

    les voix de l'informatique sont impénétrables mes enfant.  >:D
Connectez-vous ou Inscrivez-vous pour répondre.