Accueil > Forum > > > > compiler c/c++ main en dll
compiler c/c++ main en dll
mercredi 24 août 2011 à 13:13:18 |
compiler c/c++ main en dll

bmoumen27
|
Comment compiler le code suivant en dll avec gcc
Code C/C++ : int main(int argc, char** argv){
//the main code here
}
Comment c/c++ appels .Exe et obtenir le résultat dans une variable de type char.
Merci
bmoumen
|
|
mercredi 24 août 2011 à 13:21:31 |
Re : compiler c/c++ main en dll

CptPingu
|
Si tu utilises gcc, il y a de forte chance que ça soit pour Linux. Dans ce cas ce sont des .so et non des .dll.
On ne compile pas un "main" en bibliothèque. On y met uniquement des fonctions. Si tu ne fais déjà pas cette distinction, c'est que tu n'es pas encore assez expérimenté pour t'attaquer aux bibliothèques dynamiques.
Voici tout de même un exemple:
Code C/C++ :
int add(int a, int b)
{
return a + b;
}
Compilé avec:
gcc pouet.c -W -Wall -ansi -pedantic -shared -o pouet.so
C'est le flag -shared qui indique que l'on veut créer une bibliothèque.
________________________________________________________________________
Historique de mes créations, et quelques articles:
http://0217021.free.fr/portfolio
Merci d'utiliser Réponse acceptée si un post répond à votre question
|
|
mercredi 24 août 2011 à 14:26:34 |
Re : compiler c/c++ main en dll

BruNews
|
Le point de vue Windows va rejoindre celui donné par CptPingu pour Linux.
Une DLL exporte des fonctions, absolument jamais un point d'entrée d'un prog (main() ou WinMain()) puisqu'une DLL ne peut tourner hors d'un exe qui aura fait le contexte processus.
ciao...
BruNews, MVP VC++
|
|
mercredi 24 août 2011 à 15:12:11 |
Re : compiler c/c++ main en dll

LA_Tupac
|
Et si tu es sous Windows, ajoute Code C/C++ :
avant tes fonctions/class pour qu'elles s'exportent correctement. La ligne de commande de compilation est la même mais n'oublie pas d'ajouter "c:\CheminVersMingw\bin" à la variable d'environnement "Path".
|
|
samedi 27 août 2011 à 16:58:55 |
Re : compiler c/c++ main en dll

bmoumen27
|
merci tlmonde pour ces réponses.
ce que je voulais dire et préciser c'est que j'ai un prog c/c++ dont la fonction main prend comme argument 'entrée de la ligne de commande.
la question 1:
comment traiter les argument d'entrée de la ligne de commande pour que ma fonction qui remplace main fonctionne de la même manière.
la question 2:
Comment c/c++ appelle un (.Exe) et obtenir le résultat dans une variable de type char.
merci
|
|
samedi 27 août 2011 à 23:53:18 |
Re : compiler c/c++ main en dll

BruNews
|
C/C++ est le langage pour coder l'exe, une fois compilé, le langage a fini son taf dès que tu fermes l'éditeur de code.
C'est le loader system qui charge l'exe.
Sous Windows tu as GetCommandLine(), te suffit de faire un strcpy() avec le pointeur retourné dan un char[].
ciao...
BruNews, MVP VC++
|
|
dimanche 28 août 2011 à 15:27:13 |
Re : compiler c/c++ main en dll

bmoumen27
|
voici une solution de comment générer et utiliser une dll avec gcc sous windows à partir de plusieurs fichiers "c".
(windows xp sp2, cygwin 2.340.2.5, gcc 3.2)
1: add.c
[code = cpp]
#include <stdio.h>
#include <math.h>
int add(int a,int b){
int c = a+b;
return c;
}
[/code]
gcc -c add.c
ce qui donne add.o
-------------------------
2: sub.c
[code = cpp]
#include <stdio.h>
#include <math.h>
int sub(int a,int b){
int c = a-b;
return c;
}
[/code]
gcc -c sub.c
ce qui donne sub.o
-------------------------
3: mul.c
[code = cpp]
#include <stdio.h>
#include <math.h>
int mul(int a,int b){
int c = a*b;
return c;
}
[/code]
gcc -c mul.c
ce qui donne mul.o
-------------------------
4: equ.c
[code = cpp]
#include <stdio.h>
#include <math.h>
int equ(int a,int b){
int c = mul(a,b);
int d = add(sub(a,c),sub(b,c));
return d;
}
[/code]
gcc -c equ.c
ce qui donne equ.o
gcc -shared -o equ.dll equ.o add.o sub.o mul.o
ce qui donne equ.dll
-------------------------
5: main.c
[code = cpp]
#include <stdio.h>
#include <math.h>
int main(){
int a = equ(5,6);//on fait appel à la dll (equ.dll)
printf(" %d",a);
return a;
}
[/code]
gcc -o main main.c -L./ -lequ
ce qui donne main.exe
|
|
dimanche 28 août 2011 à 15:29:27 |
Re : compiler c/c++ main en dll

bmoumen27
|
voici une solution de comment générer et utiliser une dll avec gcc sous windows à partir de plusieurs fichiers "c".
(windows xp sp2, cygwin 2.340.2.5, gcc 3.2)
1: add.c
Code C/C++ :
#include <stdio.h>
#include <math.h>
int add(int a,int b){
int c = a+b;
return c;
}
gcc -c add.c
ce qui donne add.o
-------------------------
2: sub.c
Code C/C++ :
#include <stdio.h>
#include <math.h>
int sub(int a,int b){
int c = a-b;
return c;
}
gcc -c sub.c
ce qui donne sub.o
-------------------------
3: mul.c
Code C/C++ :
#include <stdio.h>
#include <math.h>
int mul(int a,int b){
int c = a*b;
return c;
}
gcc -c mul.c
ce qui donne mul.o
-------------------------
4: equ.c
Code C/C++ :
#include <stdio.h>
#include <math.h>
int equ(int a,int b){
int c = mul(a,b);
int d = add(sub(a,c),sub(b,c));
return d;
}
gcc -c equ.c
ce qui donne equ.o
gcc -shared -o equ.dll equ.o add.o sub.o mul.o
ce qui donne equ.dll
-------------------------
5: main.c
Code C/C++ :
#include <stdio.h>
#include <math.h>
int main(){
int a = equ(5,6);//on fait appel à la dll (equ.dll)
printf(" %d",a);
return a;
}
gcc -o main main.c -L./ -lequ
ce qui donne main.exe
|
|
Cette discussion est classée dans : compiler, code, int, dll, main
Répondre à ce message
Sujets en rapport avec ce message
Comment compiler GTK sous Visual?? [ par pierru ]
Bonjour,je me suis récemment mis a GTK, et lorsque je compile un prog pour faire une fenetre toute simple ca bug... Comment compiler un main du type:i
Utilisation DLL SANS .lib [ par nasedo47 ]
J'ai récupéré une DLL sur un site ainsi qu'une page avec les prototypes de toutes les fonctions contenues dans cette DLL.J'aimerais utiliser ces fonct
Créer une dll en C avec Code::Blocks [ par seb5 ]
Salut à tous,Je souhaite placer certaines de mes fonctions dans une dll pour pouvoir les réutilisé dans plusieurs programmes. Je programme en C sous W
pointeur sur une fonction [ par pasty ]
Bonjour,J'appelle une fonction f(int *,int *,int) dont le code est dans un DLL depuis le programme principal main.cpp Je déclare la fonction dans m
exemple de creation et utilisation d'un simple dll . [ par bonapart002 ]
Bonjour:je suis débutant en c++ .je travail avec Borland C++ 5.01.je veux créer une dll puis l'utiliser dans un programme .pour cela j'ai crée un pr
[C]RegisterServiceProcess [ par don619 ]
bonjour, J'utilise Wx-DevCpp et je travail en ce moment sur un TP permettant d'afficher et de cacher un processur et je suis coincée dejà Voila mon
Eviter doublons avec la fonction rand() [ par adeeldu95 ]
Salut a tous, j'ai un code qui génère des cartes de jeu (poker), aléatoirement, mais parfois j'ai des cartes en double Pour le premier tirage tout
Impossible d'obtenir l'adresse d'une function contenus dans une DLL [ par Nementon ]
Bonjours, Voila le code simple d'une DLL et de son exécutable, compilé sous Visual 2008 et qui pour de sombres raisons plante lamentablement, lorsqu
rectification dune code C et/ou aide sur l'algorithme [ par negets ]
bonjour, besoin d'aide; j'aimerai dégager l'algorithme de ce code afin de le programmer sous matlab je connais plus rien en C et C++(je commence à lir
Convert char** en int sous c [ par clavz40 ]
Bonjour a tous, Je développe une petite application en c pour appareil de lecture de code barre dont je récupère les infos. J'avais besoin d'une fon
Livres en rapport
|
Derniers Blogs
IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc REACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITERREACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITER par Groc
Une mauvaise utilisation de rx lors de l'écriture d'une couche d'accès à des services peut conduire à des cas embarassants avec des erreurs mal gérées, des appels qui ne partent lorsqu'ils le devraient, et même des résultats incorrects . le tout nuis...
Cliquez pour lire la suite de l'article par Groc SHAREPOINT BLOG SITE, PROBLèME D'ARCHIVESSHAREPOINT BLOG SITE, PROBLèME D'ARCHIVES par junarnoalg
Dernièrement, nous avons migré le site
myTIC
vers un nouveau serveur SharePoint 2010. Dans les contenus que nous vouloins récupérer, nous avions un certain nombre de blogs.
Nous avons utilisé les commandes Power...
Cliquez pour lire la suite de l'article par junarnoalg
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|