IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++/CLI Discussion :

Tout est-il possible ?


Sujet :

C++/CLI

  1. #1
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Par défaut Tout est-il possible ?
    Bonjour

    Je suis plutot expert C#...

    voici ma question :

    Existe t-il des situations ou il est IMPOSSIBLE d'utiliser un fichier .lib en C++/CLI ?

    La raison de ma question est que je veux utiliser une librairie particulière d'un partenaire (je n'ai que le .lib et les .h)..
    Si je compile le projet du partenaire en natif, tout fonctionne. Si je me "contente" de basculer en mode "CLR" (que ca soit pure, safe, oldsyntax,etc) la compilation échoue (redefine etc...)

    Si je fais un "/FORCE:MULTIPLE", j'arrive à linker sauf une ligne que me dit ceci :

    Unresolved Lnk 2019 : can't fine ref to ___tmainCTRStartup (dans libcmt.lib)...

    quelqu'un aurait-il une idée ?

    J'ai bcp cherché sur le web pour en arriver pour le moment à la conclusion que je ne pourrais pas "mettre" ma librairie en C++/CLI...

    Quelles options possibles ? des idées ?

    Merci d'avance !!!

  2. #2
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 393
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 393
    Par défaut
    Déjà, passe de /MD plutôt que /MT. Puis réessaie.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #3
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Par défaut
    ok j'essayerais cela

    mais il me semble que cela a donné le même résultat

    Je checke et te dis cela lundi (car l'ordi est au boulot, et là, c'est le week-end

  4. #4
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Par défaut
    héhé, j'ai essayé, même topo.

    En fait, j'ai une lib avec un exemple qui l'utilise. CE code est du code C++ compilé en non managé.

    Il compile très bien.

    Si je bascule en compilation managé (CLR, quelque soit l'option), la première chose que j'ai est la suivante :

    Bcp de fonctions sont redéfinis à l'édition de lien.
    les libs qui me mettent cela sont des libs "'standards", à savoir :

    msvcprtd.lib
    libcpmtd.lib
    libcmt.lib
    libcmtd.lib
    msvcmrt.lib


    Ce que j'ai essayé :

    /FORCE:MULTIPLE... ca me vire les problèmes de link, mais au final, je me prends un "unreferenced ... _tMainCRTStartup dans libcmt.lib

    J'ai essayé ignoré les librairies en mettant celle qui allaient bien ==> Pas bon

    Bref, la question que je me pose est la suivante :

    Existe t-il une solution ou bien il est possible que certaines librairies que l'on a en .lib soit INEXPLOITABLES en C++/CLI à moins de pouvoir les recompiler avec certaines options particulières ?

    Merci de m'aider en fonction de ce que j'ai pu vous dire

    Au pire, je peux eventuellement fournir le projet qui me pourrit la vie

  5. #5
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 393
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 393
    Par défaut
    Avec une liste de conflits pareil, c'est un miracle que ça marche en non-managé: Ce code utilise à la fois la version DLL et la version non-DLL de la CRT!
    (sans compter les versions debug de chaque).

    Essaie de recopiler tout ton code sans /clr, mais avec /MD. Puis pour toutes les libs qui foirent, passe-les en /MD aussi.
    Ton projet doit être entièrement en /MD pour pouvoir utiliser la version DLL de la CRT. Quand tout marchera en /MD, réessaie d'activer l'option /clr et ça devrait marcher cette fois.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  6. #6
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Par défaut
    ok merci médinoc

    Le seul hic, c'est que les librairies que j'utilise en .lib ne sont pas compilées par mes soins et que donc, je n'ai pas la possibilité de les recompiler.

    donc, j'aurais tendance à dire que sans pouvoir moi même compiler ces libs, je suis dans la panade

    Je vais essayer de voir avec les "fournisseurs" de ces libs si il est possible d'avoir quelque chose de propre

    Merci beaucoup en tout cas pour ton aide !

  7. #7
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Par défaut
    salut

    les fournisseurs des libs m'ont filé une compilation avec /MD et maintenant, tout fonctionne à merveille

    MErci pour l'aide en tout cas!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 5
    Dernier message: 02/02/2011, 16h05
  2. Réponses: 8
    Dernier message: 19/03/2010, 07h34
  3. Réponses: 3
    Dernier message: 04/08/2008, 17h35
  4. Est il possible de dployer tout un projet comme Web Service?
    Par KING_OF_GRACELAND dans le forum Services Web
    Réponses: 2
    Dernier message: 18/12/2007, 17h15
  5. [MySQL] Est-il possible de créer un job qui s'executerais touts les jours à minuit
    Par ToxiZz dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 24/01/2007, 21h41

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo