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

Visual C++ Discussion :

Visual C++ Express 2008 - problème de symboles non résolus: __ftol2_sse et __chkstk


Sujet :

Visual C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 28
    Par défaut Visual C++ Express 2008 - problème de symboles non résolus: __ftol2_sse et __chkstk
    Bonjour,

    J'ai du code C que je compile sous Visual C++ Express 2008 pour en faire des librairies statiques (des .lib).

    J'utilise ensuite ces .lib pour créer un éxécutable, dans un autre environnement.

    Lors du link de ces .lib (dans un environnement hors Visual), j'ai 2 symboles non résolus:
    __ftol2_sse et
    __chkstk

    Je suis convaicu que c'est Visual qui a inséré ces symboles au moment de la génération de mes librairies, mais je n'arrive pas à savoir quelles propriété de des mes projets (qui font des .lib) je dois modifier pour faire disparaître ces symboles.

    Merci pour votre aide !

  2. #2
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Par défaut
    Une de tes librairies statiques utilise simplement elle-même une librairie, que tu n'as pas incluse dans ton projet exécutable.

    Un début de réponse sur cette page, j'ai vu aussi pas mal de choses concernant l'utilisation de DirectX dans une application console comme cause d'une telle erreur de link.


    A priori, cela peut se régler en effectuant cette opération :
    Citation Envoyé par Forum MSDN
    To solve this open the Project Properties, then goto:
    C/C++ -> Code Generation
    ... and change:
    Basic Runtime Checks from "Both (/RTC1, equiv. to /RTCsu)" to "Default".
    Mac LAK.
    ___________________________________________________
    Ne prenez pas la vie trop au sérieux, de toutes façons, vous n'en sortirez pas vivant.

    Sources et composants Delphi sur mon site, L'antre du Lak.
    Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum adéquat.

    Rejoignez-nous sur : Serveur de fichiers [NAS] Le Tableau de bord projets Le groupe de travail ICMO

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 28
    Par défaut
    Merci.

    J'ai déjà fait la manip de la citation:
    Envoyé par Forum MSDN
    To solve this open the Project Properties, then goto:
    C/C++ -> Code Generation
    ... and change:
    Basic Runtime Checks from "Both (/RTC1, equiv. to /RTCsu)" to "Default".
    Cela ne résoud que les symboles __RTC_Shutdown ou __RTC_InitBase (ainsi que quelques autres)...

    Ceux dont je parle restent.

    Sous Visual C++ Express, j'ai fait un "main" et je viens lui linker les librairies. Pas de soucis SAUF si dans Propriétés/Propriété de configuration/C C++/Génération de code je choisis dans le champ de mettre "non" (/NODEFAULTLIB) dans "Activation de la génération minimale" (au lieu de "oui (Gm)")
    Auquel cas, je retouve mes soucis de link (plus d'autres).
    Quelle est la(les) lib(s) qui me manque(nt) ? Où est(sont)-elle(s) sur le PC ?

    Je ne comprends pas ce qu'il se passe car je n'ai pas les symboles en question dans mon code: c'est donc Visual qui les y ajoute à la création de la librairie... Cela a pour conséquence la création d'une librairie non exportable. Il doit bien y voir un moyen de ne pas ajouter ces choses ?

  4. #4
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Par défaut
    Citation Envoyé par peter3000 Voir le message
    Sous Visual C++ Express, j'ai fait un "main" et je viens lui linker les librairies. Pas de soucis SAUF si dans Propriétés/Propriété de configuration/C C++/Génération de code je choisis dans le champ de mettre "non" (/NODEFAULTLIB) dans "Activation de la génération minimale" (au lieu de "oui (Gm)")
    Auquel cas, je retouve mes soucis de link (plus d'autres).
    Dans ce cas, question bête : pourquoi le fais-tu ???

    Citation Envoyé par peter3000 Voir le message
    Quelle est la(les) lib(s) qui me manque(nt) ? Où est(sont)-elle(s) sur le PC ?
    Vu les préfixes, elles sont dans les runtimes de Visual (double underscore en début d'identifiant).

    Citation Envoyé par peter3000 Voir le message
    Je ne comprends pas ce qu'il se passe car je n'ai pas les symboles en question dans mon code: c'est donc Visual qui les y ajoute à la création de la librairie... Cela a pour conséquence la création d'une librairie non exportable. Il doit bien y voir un moyen de ne pas ajouter ces choses ?
    Visual les a insérés parce que tu as utilisé des fonctions qui les utilisent... Apparemment, la cause principale est l'utilisation de composants DirectX dans une application console : est-ce ton cas ?

    La fonction "ftol2_sse", d'après son nom, utiliserait les registres SSE du processeur pour convertir un nombre à virgule flottante en un entier long.
    La fonction "chkstk", elle, est destinée à la vérification de la pile lorsque tu as plus de 4 ko de variables locales sur la pile.

    Dans les deux cas, si tu ne linkes pas la bonne librairie runtime (et en général, il vaut mieux laisser le compilateur tranquille à ce sujet), tu n'auras pas ces fonctions.
    Mac LAK.
    ___________________________________________________
    Ne prenez pas la vie trop au sérieux, de toutes façons, vous n'en sortirez pas vivant.

    Sources et composants Delphi sur mon site, L'antre du Lak.
    Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum adéquat.

    Rejoignez-nous sur : Serveur de fichiers [NAS] Le Tableau de bord projets Le groupe de travail ICMO

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 28
    Par défaut
    Citation Envoyé par Mac LAK Voir le message
    Dans ce cas, question bête : pourquoi le fais-tu ???.
    Je dois livrer à quelqu'un des .lib qui seront utilisées en dehors de l'environnement Visual (dans Matlab pour être précis, et l'utilisateur n'a pas visual). J'utilise Visual pour faire ces .lib et les tester (mais dès que je quitte Visual, pb de link).

    Citation Envoyé par Mac LAK Voir le message
    Visual les a insérés parce que tu as utilisé des fonctions qui les utilisent... Apparemment, la cause principale est l'utilisation de composants DirectX dans une application console : est-ce ton cas ?
    Je n'en sais rien du tout Je ne suis pas trop spécialiste. Ce que je sais c'est que je fais des librairies statiques .lib - et j'imagine que c'est dans une application console car je crée un main (dans un autre projet) qui tient lieux d'éxécutable (et il fait appel aux fichierc C dont j'ai fait des .lib). Je teste tout ça avec le débug de Visual C++ Express.

    Citation Envoyé par Mac LAK Voir le message
    Dans les deux cas, si tu ne linkes pas la bonne librairie runtime (et en général, il vaut mieux laisser le compilateur tranquille à ce sujet), tu n'auras pas ces fonctions.
    N'est-il pas possible que le compilateur Visual me crée la lib qui contienne mon code ET ses besoins (au lieu de créer dans la lib des symboles qui viennent d'ailleurs, il pourrait aussi y inclure leur définition) ?

    Je me sens un peu largué, mais je vois ici et là que bcp ont ce pb (même si je ne vois pas la solution). Je peux faire moi même un link en plus, mais il faudrait connaître les bonnes librairies... et leur emplacement...

  6. #6
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Par défaut
    Citation Envoyé par peter3000 Voir le message
    Je dois livrer à quelqu'un des .lib qui seront utilisées en dehors de l'environnement Visual (dans Matlab pour être précis, et l'utilisateur n'a pas visual). J'utilise Visual pour faire ces .lib et les tester (mais dès que je quitte Visual, pb de link).
    Des .LIB ?? Étonnant... Ce sont plutôt des DLL que l'on file aux autres programmes, habituellement...

    Citation Envoyé par peter3000 Voir le message
    Je teste tout ça avec le débug de Visual C++ Express.
    Normalement, c'est une application console, tu n'as pas accès aux MFC (et donc aux applications graphiques) via la version Express.


    Citation Envoyé par peter3000 Voir le message
    N'est-il pas possible que le compilateur Visual me crée la lib qui contienne mon code ET ses besoins (au lieu de créer dans la lib des symboles qui viennent d'ailleurs, il pourrait aussi y inclure leur définition) ?
    Justement, non : un .LIB ne contient QUE le code correspondant aux sources compilés et mis dedans, et absolument AUCUN code additionnel provenant d'une quelconque dépendance... Ce qui t'oblige parfois à linker des librairies additionnelles quand tu utilises une librairie statique, même si apparemment elles n'ont aucun rapport avec le schmilblik...

    Citation Envoyé par peter3000 Voir le message
    Je me sens un peu largué, mais je vois ici et là que bcp ont ce pb (même si je ne vois pas la solution). Je peux faire moi même un link en plus, mais il faudrait connaître les bonnes librairies... et leur emplacement...
    Ton .LIB ne sera pas autonome pour autant, et ne le sera jamais. Ce ne sera possible que si tu fais une DLL (éventuellement avec un .LIB d'importation, certes).
    Mac LAK.
    ___________________________________________________
    Ne prenez pas la vie trop au sérieux, de toutes façons, vous n'en sortirez pas vivant.

    Sources et composants Delphi sur mon site, L'antre du Lak.
    Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum adéquat.

    Rejoignez-nous sur : Serveur de fichiers [NAS] Le Tableau de bord projets Le groupe de travail ICMO

Discussions similaires

  1. Réponses: 2
    Dernier message: 01/03/2011, 16h11
  2. Réponses: 0
    Dernier message: 14/10/2009, 22h23
  3. Problème de connection avec Visual Basic Express 2008
    Par qlaimand dans le forum Outils
    Réponses: 3
    Dernier message: 05/04/2009, 21h15
  4. problème visual studio express 2008 et sql server
    Par mimousse dans le forum VB.NET
    Réponses: 2
    Dernier message: 22/03/2009, 11h44
  5. Visual C++ Express 2005 : problème
    Par Myth_Titans dans le forum MFC
    Réponses: 17
    Dernier message: 14/06/2006, 19h40

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