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++ Discussion :

__declspec(dllexport) ne peut pas être utilisé avec /clr:pure


Sujet :

C++

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2006
    Messages
    932
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 932
    Points : 448
    Points
    448
    Par défaut __declspec(dllexport) ne peut pas être utilisé avec /clr:pure
    Bonjour,

    j'ai récupéré un code sur le forum qui inclut des .hpp de la librairie boost.

    j'ai téléchargé boost et je l'ai ajouté au projet, maintenant je n'ai plus d'erreur demandant d'inclure ces fichiers mais j'ai l'ereur suivante :

    error C3389: __declspec(dllexport) ne peut pas être utilisé avec /clr:pure ou /clr:safe C:\...\boost\serialization\void_cast_fwd.hpp 29
    j'ai vu sur msdn :

    A __declspec modifier used implies a per process state. /clr:pure implies a per appdomain state. So, declaring a variable with the keyword __declspec modifier and compiling with /clr:pure is not allowed.
    qu'est ce qu'un per process state? je suppose que ce n'est pas compatible avec un par appdomain state (j'ignore aussi ce que c'est ), et comment ne plus avoir cette erreur de compilation?

  2. #2
    Membre chevronné
    Avatar de poukill
    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 155
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 155
    Points : 2 107
    Points
    2 107
    Par défaut
    clr, c'est du code managé...
    Tu devrais utiliser du code NATIF.

  3. #3
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 069
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 069
    Points : 12 113
    Points
    12 113
    Par défaut
    Sutout s'il ne sait pas ce qu'est un AppDomain.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Février 2006
    Messages
    932
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 932
    Points : 448
    Points
    448
    Par défaut
    j'ai lu 2/3 truc sur le code managé /nno managé mais j'ai encore un peu de mal à voir la différence (enfin pour moi le non managé est plus ancien et le managé permet d'utiliser de nouveaux framework...).

    ce que je comprend pas c'est que j'ai juste voulu faire un projet Form avec ce code:

    http://www.developpez.net/forums/d59...p/#post3502821

    et je vois pas trop ce que c'est le clr: et comment etre en non managé

  5. #5
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Yvelines (Île de France)

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

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Points : 16 213
    Points
    16 213
    Par défaut
    Qui dit projet form dit code managé. Qui dit boost dit code natif.

    Tu as diverses possibilités :
    - Soit tu abandonne l'idée de faire une IHM, et tu fais un projet natif 100%
    - Soit tu utilises une autre bibliothèque (Qt, wxWidgets,...) pour faire ton IHM que les windows forms, et tu fais un projet natif 100%
    - Soit tu continues sur la voie actuelle, et tu vas devoir dans ton code séparer ce qui est managé de ce qui ne l'est pas.


    La troisième est de loin la plus difficile, surtout pour un débutant, car elle demande de comprendre deux langages différents (le C++ et le C++/CLI) et la façon dont ils peuvent se mélanger au sein d'un même code source.

    C'est la solution qu'on a choisi au travail, mais si je devais refaire l'histoire, je ferait probablement autrement. Pas uniquement à cause des difficultés rencontrées, puisqu'on a fini par les surmonter, mais à cause de la lourdeur de la couche intermédiaire qu'on a du mettre en place pour relier les deux mondes.
    Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Février 2006
    Messages
    932
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 932
    Points : 448
    Points
    448
    Par défaut
    hm,

    en fait moi au final je devrais intégrer ce code (là j'ai juste créé un projet à part pour tester) dans un projet windows form donc si j'ai bien compris ce que tu dis je dois utiliser la 3eme solution

    ou trouver un autre code de reseau de neurone qui n'utilise pas boost peut etre... sinon je suppose qu'il y a des bons tuto pour m'aider à commencer? (j'ai vu que celui là pour le moment http://nico-pyright.developpez.com/t...grationcppnet/ )

  7. #7
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Yvelines (Île de France)

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

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Points : 16 213
    Points
    16 213
    Par défaut
    Tu peux effectivement faire tout ton code en managé (c'est à dire en C++/CLI), mais dans ce cas, tu perds tous les avantages du C++ (contrôle plus fin sur les performances, génération de code par templates,...) et donc, tant qu'à faire, autant utiliser un langage conçu directement pour faire du code managé, comme C#.


    Mais si tu veux un moteur mitonné aux petits oignons en C++ et une interface en managé, effectivement, bienvenu dans la solution 3.
    Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.

  8. #8
    Expert éminent sénior

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 749
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 749
    Points : 10 666
    Points
    10 666
    Billets dans le blog
    3
    Par défaut
    A priori si Boost chercher a exporter / importer des symboles c'est qu'elle est utilise en version dynamique. Si tu utilises Boost sous forme de lib statique, tu ne devrais plus avoir ce probleme. Tu peux t'inspirer de cet article (un peu ancien):
    http://arb.developpez.com/c++/boost/install/vc++/

  9. #9
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Yvelines (Île de France)

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

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Points : 16 213
    Points
    16 213
    Par défaut
    Déjà, travailler en /clr au lieu de /clr:pure devrait aider. Eventuellement avec des #pragma unmanaged par endroit.
    Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Février 2006
    Messages
    932
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 932
    Points : 448
    Points
    448
    Par défaut
    ok merci,
    j'ai testé l'installation de boost comme c'est expliqué dans le lien mais toujours ces erreurs
    pourtant (j'ai peut etre mal compris) mais en utilisant l'exe qui installe boost et en suivant les manip, boost est alors bien en lib statique?? (l'installation est bien faite, j'ai testé le code qui vérifie les mails et j'ai eu le résultat dans la console)

    sinon travailler en /clr au lieu de /clr:pure je veux bien mais comment? là je suis un peu pommé là dessus je dois changer quoi (j'ai cherché desepérement dans les options du projet mais sans succes )? les pragma unmanaged j'ai vu des exemples sur le fonctionnement donc ca ira pour ca je pense.

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

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 518
    Points
    41 518
    Par défaut
    C'est l'option "common language runtime" des options du projet. Tu as plusieurs réglages, dont /clr, /clr:pure et /clr:safe.

    Je suis d'ailleurs surpris que tu sois en pure plutôt qu'en CLR tout court. À moins que ça ne soit une nouveauté de Visual 2008, tu ne devrais pas être en pure avant d'avoir déjà tripoté les options du projet...
    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.

  12. #12
    Membre averti
    Profil pro
    Inscrit en
    Février 2006
    Messages
    932
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 932
    Points : 448
    Points
    448
    Par défaut
    en fait j'utilise le 2005 c'est peut etre pour ca... le projet avait été fait en 2005 et avec le 2008 j'ai eu qque pb donc...

Discussions similaires

  1. Réponses: 2
    Dernier message: 05/12/2014, 14h44
  2. Réponses: 0
    Dernier message: 16/09/2014, 15h17
  3. [CR 10] Running Total ne peut pas être ré-utilisé.
    Par l3malex dans le forum SAP Crystal Reports
    Réponses: 3
    Dernier message: 28/08/2009, 15h42
  4. REDEFINES peut-il être utilisé avec un 77 ?
    Par beegees dans le forum Cobol
    Réponses: 2
    Dernier message: 17/01/2008, 09h34

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