Fonctions exposées / masquées d'une DLL
Bonjour a tous,
Quelques précisions tout d'abord :
- Environement de Dev. : NetBeans / MinGw
Problème :
J'ai un code source de programme en C, je l'ai transformé à minima en DLL (Projet C/C++ DLL dynamique).
Je fais un test :
Quand je compile le tout, j'obtiens bien ma DLL, mais le problème c'est que celle-ci exporte toute un tas de fonctions alors que d'apres ce que je sais par défaut toute les fonctions sont par défaut cachées.
J'ai essayer de forcer soit C uniquement soit C++ mais rien a faire même résultat.
Je sais creer des dll sous win, ce code tout bete exporte bien ma fonction
Code:
1 2 3 4
|
__declspec(dllexport) int somme(int a,int b){
return a+b;
} |
et ce code la masque :
Code:
1 2 3
| int somme(int a,int b){
return a+b;
} |
Dans le programme en C dont j'ai les source , il n'y aucun "__declspec(dllexport) ", Alors comment cela se fait-il que les fonctions soit exportée ????
Ce même programme par ailleurs avec un "main()" me fait un "exe" correcte.
Quelque chose m'échappe..... quelqu'un pour m'éclairer ?
Merci par avance .
Difference compilation Netbeans + MinGw / Vstudio 2005
Citation:
Envoyé par
souviron34
la portée est décidée par le mot-clé static
Toute fonction ou variable déclarée static ne sera visible que dans le module spécifié, donc dans ton cas uniquement dans la DLL..
Merci de ta réponse souviron34,
mais je suis au courant pour le "static", j'ai de plus relu le tuto fait par notre camarade "Melem" (http://melem.developpez.com/tutoriel...ation-separee/)
J'ai fait un autre test, j'ai compilé avec Visual studio 2005 et la mes fonctions C de la DLL ne sont plus exposées... il n'y pourtant nulle-part de mot clé static dans mes sources C composant la DLL et pourtant quand Vs2005 compile je n'ai aucune fonctions exposées, ce qui est normal au final puisque par défaut toutes les fonctions d'une DLL sont privées...
Je me demande donc toujours :
pourquoi quand je compile avec Netbeans / MinGw toutes les fonctions sont visibles par defaut alors même qu'il n'y a aucun "dllexport"...