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 :

Compiler les dlls avec le programme


Sujet :

C

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2021
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2021
    Messages : 52
    Points : 41
    Points
    41
    Par défaut Compiler les dlls avec le programme
    Bonjour à tous;
    est-il possible "d'inclure" les dlls dans l'exécutable ? avec un .rc ?
    je suis sous windows et j'utilise codeblocks.
    Merci d'avance

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 630
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste/ Programmeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 4 630
    Points : 10 556
    Points
    10 556
    Par défaut
    Oui et non

    Oui : dans ce cas, ta bibliothèque .dll devient 1 ressource comme 1 autre et tu devras **l'installer** pour l'utiliser.
    En regardant vite fait on peut charger 1 ressource pour récupérer 1 "assembly" mais pas 1 .dll. Donc sûrement qu'en C++ pur (pas C++ managed) c'est impossible.

    Non : dans ce cas, ta bibliothèque .dll est 1 vraie bibliothèque.

    Pour la question .rc, il me semble que c'est pour coder 1 bibliothèque partagée (<- en gros c'est 1 bibliothèque dynamique dont le code de chargement/ déchargement/ appel/ ... est généré).

  3. #3
    Membre expérimenté
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Juillet 2020
    Messages
    352
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Juillet 2020
    Messages : 352
    Points : 1 376
    Points
    1 376
    Par défaut
    Une dll dans l'exécutable en ressource …

    Autant faire une édition des liens statique, ça évite d'avoir à installer les DLL ou de les fournir avec.

  4. #4
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2021
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2021
    Messages : 52
    Points : 41
    Points
    41
    Par défaut
    Citation Envoyé par WhiteCrow Voir le message
    Autant faire une édition des liens statique, ça évite d'avoir à installer les DLL ou de les fournir avec.
    Comment fait-on ? (je suis sous codebloks

  5. #5
    Membre expérimenté
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Juillet 2020
    Messages
    352
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Juillet 2020
    Messages : 352
    Points : 1 376
    Points
    1 376
    Par défaut
    Il faut commencer par comprendre comment ça fonctionne de passer d'un code source à un exécutable.

    Tu as un code source qui sera compilé en un fichier objet. La phase de compilation n'est que ça. Il faut évidemment fournir à la commande de compilation des paramètres qui vont indiquer où trouver les headers, comment optimiser, etc.
    Une fois cela fait, la phase suivante est l'édition des liens. Cela consiste à lier ton fichier objet et les bibliothèques (ce qui signifie que le linker va indiquer dans quelle bibliothèque on peut trouver telle ou telle fonction que tu utilises → par exemple strcmp dans libc, cos dans libm, etc. Alors soit tu lies avec une bibliothèque dynamique (une DLL) et l'exécutable va contenir suffisamment d'infos pour que l'OS puisse charger la DLL et y accéder quand ton programme fait appel à une des fonctions de cette DLL ou tu fais une édition statique ce qui signifie que le linker va intégrer dans ton exécutable le code auquel tu fais appel.

    Donc, un moment donné, comme tu veux développer une solution logicielle, il va falloir essayer d'utiliser google (ou tout autre moteur de recherche) afin d'apprendre effectivement ce qu'est une édition de liens, comment on fait un link statique … puis ensuite comment dire à CB pour le faire.

    Un forum n'est pas un endroit pour expliquer en détail puis pas à pas la démarche car en l'occurrence c'est long à faire. En revanche, on peut tout à fait t'orienter vers ce que tu dois rechercher. Ensuite si tu n'as pas compris un point particulier alors nous pourrons t'aider plus en avant.

    Maintenant, tout à fait entre nous, le fait que tu rechigne à vouloir utiliser une plateforme un peu moins désuète que GTK2 ne nous donnes pas forcément envie de pousser nos explications très loin ; les voyages dans le temps à plus de 10 ans en arrière ne sont pas ma tasse de thé.

  6. #6
    Expert éminent sénior
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 630
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste/ Programmeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 4 630
    Points : 10 556
    Points
    10 556
    Par défaut
    Citation Envoyé par LSBTD Voir le message
    Comment fait-on ? (je suis sous codebloks
    Pour reprendre @WhiteCrow et te donner 1 indication de ce qu'il faut faire

    Est-ce que les DLLs t'appartiennent (tu as le code source) ?

    Oui : tu as 2 choix
    • Mettre le code source dans celui de ton exécutable (en supprimant évidemment tout le code de chargement/ déchargement/ appel/ ...)
    • Changer la cible de "bibliothèque dynamique" en "bibliothèque statique" (en gros le fichier résultat sera 1 ficher .lib/ .a au lieu de .dll/ .so)


    Non : ce sont des bibliothèques système.
    Il faut regarder dans les options pour lier avec les "bibliothèques système statiques" (1 truc du style Project -> Properties -> Build Target -> Type -> Static library)
    Après il faut faire attention : certaines **sociétés** ne fournissent pas les versions statiques. Exemple : cygwin

    Et pour finir, tu as aussi les entêtes précompilées et les modules en C++20 ... qui sont différents mais peut-être que cela peut correspondre à tes besoins.

  7. #7
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2021
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2021
    Messages : 52
    Points : 41
    Points
    41
    Par défaut
    Arrivé là je fais quoi ? (pour ce projet, la DLL que j'aimerais liée est SDL2.dll)
    Nom : Capture d’écran 2021-08-26 084401.png
Affichages : 87
Taille : 17,0 Ko

  8. #8
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 115
    Points : 32 967
    Points
    32 967
    Billets dans le blog
    4
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 01/04/2009, 21h48
  2. JAR compiler les images avec mon projet
    Par hisy dans le forum Général Java
    Réponses: 6
    Dernier message: 12/07/2007, 14h07
  3. Compilation avec un programme en c
    Par JavaAcro dans le forum Linux
    Réponses: 7
    Dernier message: 15/11/2006, 17h53
  4. Compiler les JSP avec Eclipse
    Par semaj_james dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 17/05/2006, 13h59
  5. Réponses: 13
    Dernier message: 19/01/2006, 10h06

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