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 :

[C <=> C++] besoins informations sur développement dll ou lib


Sujet :

C

  1. #1
    Débutant
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2004
    Messages
    452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2004
    Messages : 452
    Points : 324
    Points
    324
    Par défaut [C <=> C++] besoins informations sur développement dll ou lib
    Bonjour à tous,

    J'ai à disposition un ensemble de dll/lib developpé en C++.
    Je souhaiterai utiliser certaines de ces fonctions dans une dll en C.
    Le soucis, c'est qu'a priori, les "#define cplusplus" n'ont pas été mis dans les dll/lib initial.

    Je me retrouve donc ( à confirmer ) à devoir developper une dll/lib en c++ qui integrera cette fois-ci les "#define cplusplus" afin de la rendre utilisable dans une autre lib/dll en C.

    Quelqu'un pourrais me confirmer si mon approche est bonne ?

    Merci d'avance,

    Cordialement,

    Moulefrite

  2. #2
    Membre émérite
    Avatar de TheGzD
    Homme Profil pro
    Ingénieur/ Docteur en Informatique
    Inscrit en
    Avril 2007
    Messages
    1 327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Ingénieur/ Docteur en Informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 327
    Points : 2 677
    Points
    2 677
    Par défaut
    les directives #define sont utilisés par le préprocesseur, une fois le code compilé (ce qui est le cas de ta dll) je ne vois pas vraiment l'influence que ça pourrait avoir
    Vous postez du code ? Merci d'utiliser les balises
    Un message vous paraît pertinent ? Merci de le gratifier d'un vote positif
    Vous avez obtenu une réponse à votre question ? Merci d'utiliser le tag
    __________________
    Ingénieur R&D, diplômé en 2007 de l'ISIMA
    Docteur en informatique, diplômé en 2015 de l'EDSPI de Clermont-Ferrand

  3. #3
    Débutant
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2004
    Messages
    452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2004
    Messages : 452
    Points : 324
    Points
    324
    Par défaut
    Citation Envoyé par TheGzD Voir le message
    les directives #define sont utilisés par le préprocesseur, une fois le code compilé (ce qui est le cas de ta dll) je ne vois pas vraiment l'influence que ça pourrait avoir
    Merci TheGzD pour ta reponse,

    Bah mon but serai de pouvoir rendre une dll C++ ( utilisable uniquement par du code c++ ) utilisable par une dll en C en y ajoutant une dll intermediaire qui elle contiendrais les directives me permettant d'utiliser la premiere dll.

    En esperant avoir été clair .

    Sinon je suis ouvert à toute proposition.

    Merci encore,

    Cordialement,

    Moulefrite

  4. #4
    Membre émérite
    Avatar de TheGzD
    Homme Profil pro
    Ingénieur/ Docteur en Informatique
    Inscrit en
    Avril 2007
    Messages
    1 327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Ingénieur/ Docteur en Informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 327
    Points : 2 677
    Points
    2 677
    Par défaut
    La dll, qui a été développée en C++, est utilisable en l'état par une dll C dans la mesure ou tu respectes les typages requis par tes points d entrée.

    Pas besoin de dll intermédiaire ou je ne sais quoi.
    Vous postez du code ? Merci d'utiliser les balises
    Un message vous paraît pertinent ? Merci de le gratifier d'un vote positif
    Vous avez obtenu une réponse à votre question ? Merci d'utiliser le tag
    __________________
    Ingénieur R&D, diplômé en 2007 de l'ISIMA
    Docteur en informatique, diplômé en 2015 de l'EDSPI de Clermont-Ferrand

  5. #5
    Débutant
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2004
    Messages
    452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2004
    Messages : 452
    Points : 324
    Points
    324
    Par défaut
    Citation Envoyé par TheGzD Voir le message
    La dll, qui a été développée en C++, est utilisable en l'état par une dll C dans la mesure ou tu respectes les typages requis par tes points d entrée.

    Pas besoin de dll intermédiaire ou je ne sais quoi.
    Si je te comprend bien, il me suffit juste de créer un espece de "wrapper" pour les types "String" par exemple ?

    Merci encore,

  6. #6
    Membre émérite
    Avatar de TheGzD
    Homme Profil pro
    Ingénieur/ Docteur en Informatique
    Inscrit en
    Avril 2007
    Messages
    1 327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Ingénieur/ Docteur en Informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 327
    Points : 2 677
    Points
    2 677
    Par défaut
    Oui. Dans ton cas ce wrapper se limitera sûrement à un pointeur de fonction.

    Normalement les types utilisables (dans la signature d'un point d'entrée de dll) par ces différents langages ont leur équivalent win32.
    En C/C++tu ne dois pas avoir grand chose à faire. Tu peux aller jeter un coup d’œil ici si tu veux en savoir plus sur les types win32.
    Vous postez du code ? Merci d'utiliser les balises
    Un message vous paraît pertinent ? Merci de le gratifier d'un vote positif
    Vous avez obtenu une réponse à votre question ? Merci d'utiliser le tag
    __________________
    Ingénieur R&D, diplômé en 2007 de l'ISIMA
    Docteur en informatique, diplômé en 2015 de l'EDSPI de Clermont-Ferrand

  7. #7
    Débutant
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2004
    Messages
    452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2004
    Messages : 452
    Points : 324
    Points
    324
    Par défaut
    Citation Envoyé par TheGzD Voir le message
    Oui. Dans ton cas ce wrapper se limitera sûrement à un pointeur de fonction.

    Normalement les types utilisables (dans la signature d'un point d'entrée de dll) par ces différents langages ont leur équivalent win32.
    En C/C++tu ne dois pas avoir grand chose à faire. Tu peux aller jeter un coup d’œil ici si tu veux en savoir plus sur les types win32.
    Merci encore TheGzD,
    Moi ce sera pour une utilisation sous Windows Mobile 6.1, j'imagine que ce sera quasiment pareil.
    Si je comprend bien, mon wrapper consistera uniquement à créer des pointeur de fonction, et concernant les objects et/ou types de données rien ne sera à faire ?

    Encore une question, est-il possible de gérer des object c++ (via un wrapper) dans des structure en c ?

    Merci d'avance,

  8. #8
    Expert confirmé Avatar de fregolo52
    Homme Profil pro
    Développeur C
    Inscrit en
    Août 2004
    Messages
    2 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur C

    Informations forums :
    Inscription : Août 2004
    Messages : 2 364
    Points : 5 378
    Points
    5 378
    Par défaut
    Citation Envoyé par moulefrite Voir le message
    Encore une question, est-il possible de gérer des object c++ (via un wrapper) dans des structure en c ?
    Si bien tout saisi :
    Euh .... je dirais : oui.
    String est un objet, non ?

    Si tu veux stocker les variabes membres d'une classe dans une structure pour être traitées dans la partie C, oui tu peux faire ça dans le wrapper.

  9. #9
    Membre émérite
    Avatar de TheGzD
    Homme Profil pro
    Ingénieur/ Docteur en Informatique
    Inscrit en
    Avril 2007
    Messages
    1 327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Ingénieur/ Docteur en Informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 327
    Points : 2 677
    Points
    2 677
    Par défaut
    Concernant les types de données il y a tout sur la page que je t'ai donné dans mon précédent post. Tu ne pourras jamais passer d'objets, il n'y en a pas en win32.
    Par contre l'adresse d'un objet tu pourras, tu pourras ainsi passer un pointeur. Il peut d'ailleurs être judicieux de distribuer un header avec ta dll afin de décrire certaines structures et/ou classes.
    Par contre attention au heap corruption dans ce cas : la dll qui alloue la mémoire doit être celle qui la restitue. Il doit exister des solutions de contournement avec des partages d'espace mémoire mais je ne saurai t'en dire plus.

    Voici un exemple d'utilisation de pointeur de fonction pour appeler dynamiquement un point d'entrée d'une dll.
    Vous postez du code ? Merci d'utiliser les balises
    Un message vous paraît pertinent ? Merci de le gratifier d'un vote positif
    Vous avez obtenu une réponse à votre question ? Merci d'utiliser le tag
    __________________
    Ingénieur R&D, diplômé en 2007 de l'ISIMA
    Docteur en informatique, diplômé en 2015 de l'EDSPI de Clermont-Ferrand

  10. #10
    Débutant
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2004
    Messages
    452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2004
    Messages : 452
    Points : 324
    Points
    324
    Par défaut
    Citation Envoyé par fregolo52 Voir le message
    Si bien tout saisi :
    Si tu veux stocker les variabes membres d'une classe dans une structure pour être traitées dans la partie C, oui tu peux faire ça dans le wrapper.
    Oui, j'aurai du preciser, je parlai de membre d'une classe object c++ à mettre dans une structure en C, comme tu l'as bien souligné.

    Merci fregolo pour la precision et pour la reponse

  11. #11
    Débutant
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2004
    Messages
    452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2004
    Messages : 452
    Points : 324
    Points
    324
    Par défaut
    Citation Envoyé par TheGzD Voir le message
    Concernant les types de données il y a tout sur la page que je t'ai donné dans mon précédent post. Tu ne pourras jamais passer d'objets, il n'y en a pas en win32.
    Par contre l'adresse d'un objet tu pourras, tu pourras ainsi passer un pointeur. Il peut d'ailleurs être judicieux de distribuer un header avec ta dll afin de décrire certaines structures et/ou classes.
    Par contre attention au heap corruption dans ce cas : la dll qui alloue la mémoire doit être celle qui la restitue. Il doit exister des solutions de contournement avec des partages d'espace mémoire mais je ne saurai t'en dire plus.

    Voici un exemple d'utilisation de pointeur de fonction pour appeler dynamiquement un point d'entrée d'une dll.

    Nickel TheGzD,
    ca semble bien convenir à mon besoin.

    En tout cas merci beaucoup à tous les 2 pour m'avoir aidés, Claire et efficace
    Je bascule en "RESOLU"

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

Discussions similaires

  1. Besoins information sur count et datediff
    Par java250r dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 09/04/2012, 15h25
  2. Besoin d'informations sur AVIFile
    Par Jim_Nastiq dans le forum Bibliothèques
    Réponses: 6
    Dernier message: 30/01/2007, 09h27
  3. Besoin d'information sur les téléafficheurs
    Par vallica dans le forum Windows
    Réponses: 5
    Dernier message: 16/08/2006, 15h22
  4. Information sur une plate forme de développement
    Par QAYS dans le forum Langages de programmation
    Réponses: 3
    Dernier message: 21/02/2006, 14h55
  5. besoin d'information sur le Streaming
    Par Dnx dans le forum Windows
    Réponses: 1
    Dernier message: 28/10/2005, 15h04

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