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

Code::Blocks Discussion :

Créer un projet DLL en C pas en C++


Sujet :

Code::Blocks

  1. #1
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Points : 12 462
    Points
    12 462
    Par défaut Créer un projet DLL en C pas en C++


    Je suis devant un petit problème, je veut créer un projet DLL mais C::B me créé un projet C++ et non C, d'ailleurs il me propose même pas le choix du langage

    Comment puis-je faire ?

    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  2. #2
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Points : 12 462
    Points
    12 462
    Par défaut
    Bon j'ai temporairement résolu le problème en changeant le compilateur dans les options du toolchain et j'ai mis celui pour le C mingw32-gcc.exe

    Je laisse le sujet ouvert à toutes meilleures propositions
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  3. #3
    Membre expert

    Avatar de germinolegrand
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Octobre 2010
    Messages
    738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Octobre 2010
    Messages : 738
    Points : 3 892
    Points
    3 892
    Par défaut
    Bonjour Franck.H,

    Je vais supposer soit que tu disposes de la dernière version de c::b, soit qu'il agit de façon identique pour les deux dernières version.

    Ton problème est facilement solvable : le fichier généré est main.cpp, il suffit de le changer en main.c afin que la compilation se fasse en C.

    C'est en effet un problème qui m'a joué quelques tours .

    La différence entre un projet C et un projet C++ réside uniquement dans l'extension des fichiers.

    Je n'ai pas encore trouvé malgré mes recherches comment se configurait la mise en relation entre l'extension et la ligne de compilation associée. J'ai bien peur que ce ne soit built-in, chose que je trouve dommage car cela permettrait plus facilement l'utilisation d'autres langages...

    J'ai trouvé .

    Tout d'abord si vous voulez faire compiler en C un fichier.cpp, clic droit -> Properties -> Advanced, changez la Compiler variable de CPP à CC. (à noter qu'une commande de build custom est possible, mais ce serait refaire un travail inutilement ).

    Ensuite, on peut ajouter des lignes de commandes de compilation/link/génération des dépendances/etc. dans Settings -> Compiler -> Global Compiler Settings -> Other Settings -> Advanced Options. /!\ Ne touchez pas ceci à la légère /!\.

    Ces quelques découvertes vont encore m'aider à apprécier C::B surtout lorsqu'il s'agit de gérer des cas récalcitrants, par exemple cmake pour ne citer que lui (et plus globalement, puisque j'ai commencé à m'essayer au développement web avec C::B...).

    En espérant que cela solutionne plus proprement ton problème que de virer le compilo c++ comme un malpropre .

  4. #4
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Points : 12 462
    Points
    12 462
    Par défaut
    Citation Envoyé par germinolegrand Voir le message
    Je vais supposer soit que tu disposes de la dernière version de c::b, soit qu'il agit de façon identique pour les deux dernières version.
    Tu suppose bien

    Citation Envoyé par germinolegrand Voir le message
    Ton problème est facilement solvable : le fichier généré est main.cpp, il suffit de le changer en main.c afin que la compilation se fasse en C.
    Même pas, c'est la première chose que j'ai faite après le premier essai de compilation. Le compilateur s'arrêtait tout le temps sur cette ligne (normal, elle est là pour ça ) J'avais d'ailleurs même édité le script pour qu'il me génère directement un fichier C
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    #ifdef __cplusplus
    #error This source file is not C++ but rather C. Please use a C-compiler
    #endif
    Ta solution ci-dessous fonctionne à merveille par contre

    Citation Envoyé par germinolegrand Voir le message
    Tout d'abord si vous voulez faire compiler en C un fichier.cpp, clic droit -> Properties -> Advanced, changez la Compiler variable de CPP à CC. (à noter qu'une commande de build custom est possible, mais ce serait refaire un travail inutilement ).
    Ca marche au poil Par contre faut le faire pour tous les fichiers alors, heureusement que j'en ai que deux dans ma DLL

    Citation Envoyé par germinolegrand Voir le message
    Ces quelques découvertes vont encore m'aider à apprécier C::B surtout lorsqu'il s'agit de gérer des cas récalcitrants, par exemple cmake pour ne citer que lui (et plus globalement, puisque j'ai commencé à m'essayer au développement web avec C::B...).
    Pareil, je n'utilise que celui-ci depuis quelques années maintenant et jamais vraiment été déçu. Des fois leur InteliSense laisse encore à désirer mais ils y arriveront un jour

    Citation Envoyé par germinolegrand Voir le message
    En espérant que cela solutionne plus proprement ton problème que de virer le compilo c++ comme un malpropre .
    Je l'utilise pas ce foutu compilo C++


    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  5. #5
    Membre expert

    Avatar de germinolegrand
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Octobre 2010
    Messages
    738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Octobre 2010
    Messages : 738
    Points : 3 892
    Points
    3 892
    Par défaut
    Ah, à noter, je ne sais pas si tu l'as essayé, j'ai oublié de le préciser : en même temps de changer le .cpp en .c il faut supprimer le fichier du projet, le renommer, le rajouter (ceci afin de permettre à c::b de faire l'étape où il choisis le type de compilo).

    Corriger le script n'est pas une mauvaise idée ^^

    Edit : +1 pour le parser un peu à la ramasse parfois ^^ (pour le C++11 c'est pas le pied par exemple ^^' même si on note des efforts notables), je crois que ce plugin est en cours de réécriture complète...

  6. #6
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Points : 12 462
    Points
    12 462
    Par défaut
    Citation Envoyé par germinolegrand Voir le message
    Ah, à noter, je ne sais pas si tu l'as essayé, j'ai oublié de le préciser : en même temps de changer le .cpp en .c il faut supprimer le fichier du projet, le renommer, le rajouter (ceci afin de permettre à c::b de faire l'étape où il choisis le type de compilo).
    Non effectivement, je n'ai pas essayé ça, je verrais la prochaine fois, maintenant elle est produite ma DLL

    Citation Envoyé par germinolegrand Voir le message
    Corriger le script n'est pas une mauvaise idée ^^
    Mais ça ne solutionnais pas le problème pour autant

    Citation Envoyé par germinolegrand Voir le message
    Edit : +1 pour le parser un peu à la ramasse parfois ^^ (pour le C++11 c'est pas le pied par exemple ^^' même si on note des efforts notables), je crois que ce plugin est en cours de réécriture complète...
    Ca ne serait pas une mauvaise chose en effet
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  7. #7
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Points : 12 462
    Points
    12 462
    Par défaut
    Au passage, une autre chose un peu naze, c'est le Build Target dans les propriétés du projet, on te proposes Windows, Linux, Mac mais il ne prend tout de même en compte que Windows, le compilateur pourrait être créé de façon a ce qu'on puisse produire du code natif pour d'autres système car :
    "C_Str_dll - Release" does not support the current platform. Skipping...
    Je ne vois pas l'intérêt de le proposer
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  8. #8
    Membre expert

    Avatar de germinolegrand
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Octobre 2010
    Messages
    738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Octobre 2010
    Messages : 738
    Points : 3 892
    Points
    3 892
    Par défaut
    Citation Envoyé par Franck.H Voir le message
    Au passage, une autre chose un peu naze, c'est le Build Target dans les propriétés du projet, on te proposes Windows, Linux, Mac mais il ne prend tout de même en compte que Windows, le compilateur pourrait être créé de façon a ce qu'on puisse produire du code natif pour d'autres système car :

    Je ne vois pas l'intérêt de le proposer
    Disons que c'est utile dans certains cas. Je m'en sers pour faire un .cbp qui couvre les bêtises de cmake ^^ ça permet par exemple de faire une virtual target unique "All" qui contient aussi bien les targets destinés à linux qu'à windows ainsi lorsqu'on exécute All seuls les targets destinées à la plateforme actuelle sont exécutés.

  9. #9
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Points : 12 462
    Points
    12 462
    Par défaut
    Vu comme ça oui pourquoi pas
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  10. #10
    Membre expert

    Avatar de germinolegrand
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Octobre 2010
    Messages
    738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Octobre 2010
    Messages : 738
    Points : 3 892
    Points
    3 892
    Par défaut
    La seule chose que je reproche aux virtual targets c'est de ne pas permettre d'inclure d'autres virtual targets .

    Sincèrement j'en découvre tous les jours un peu plus sur c::b ^^ cet été il faut vraiment que je me mette à étudier comment créer des plugins, ça pourrait être outrageusement pratique .

  11. #11
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Points : 12 462
    Points
    12 462
    Par défaut
    Citation Envoyé par germinolegrand Voir le message
    La seule chose que je reproche aux virtual targets c'est de ne pas permettre d'inclure d'autres virtual targets .
    Oui effectivement, surtout que dans le choix des projets tu peux même trouver des projets ARM etc... alors que pour le build target bin ça n'y est même pas

    Citation Envoyé par germinolegrand Voir le message
    Sincèrement j'en découvre tous les jours un peu plus sur c::b ^^ cet été il faut vraiment que je me mette à étudier comment créer des plugins, ça pourrait être outrageusement pratique .
    Ouais c'était aussi quelque chose que j'avais déjà en tête il y a quelques temps mais sans trouver le temps

    Rien que la doc de ma lib fr/en à presque complètement remettre à jour ça va me prendre une plombe, sans compter le temps que je vais passer pour réussir à faire un svn --relocate pour mettre à jour mon dépôt SubVersion sur SourceForge car ils ont pas trouvé mieux que de déménager les serveurs de dépôt, hier j'y est passé 1h sans réussir
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

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

Discussions similaires

  1. créer un projet avec des .dll
    Par valgoku dans le forum Visual Studio
    Réponses: 3
    Dernier message: 18/11/2010, 21h43
  2. Projet qui marchait, DLL qui compile pas
    Par strayyy dans le forum Visual C++
    Réponses: 2
    Dernier message: 04/06/2009, 22h15
  3. Créer un projet VB6 (et pas VB.net)
    Par sigfrit dans le forum Visual Studio
    Réponses: 1
    Dernier message: 15/03/2009, 23h52
  4. Créer un projet avec TurboC++
    Par Thrystan dans le forum Autres éditeurs
    Réponses: 16
    Dernier message: 06/09/2003, 17h32
  5. [Kylix] Projet avec fenetre marche pas
    Par Therich dans le forum EDI
    Réponses: 1
    Dernier message: 11/07/2003, 12h34

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