begin process at 2012 05 28 19:04:03
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Windows

 > 

Autre

 > 

compiler c/c++ main en dll


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

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

Administrateur CodeS-SourceS
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

Administrateur CodeS-SourceS
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

Membre Club
Et si tu es sous Windows, ajoute
Code C/C++ :
__declspec(dllexport)

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

Administrateur CodeS-SourceS
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


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,482 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales