[C][DLL] Exportation de symboles NON décorés
Bonjour,
(Imaginons que) J'ai écrit une DLL (Win32) en C contenant deux fonctions et un programme (lui aussi en C) utilisant cette DLL.
(Imaginons que) Le source de cette DLL est (soit) :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
|
#include <windows.h>
#ifdef BUILD_DLL
#define DLL_EXPORT __declspec(dllexport)
#else
#define DLL_EXPORT
#endif
void DLL_EXPORT test( void ) {
MessageBoxA( NULL, "test", "DLL", MB_OK );
}
BOOL WINAPI DllMain( HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved ) {
if ( DLL_PROCESS_ATTACH == fdwReason ) {
MessageBoxA( NULL, "DllMain", "DLL", MB_OK );
}
return TRUE;
} |
Comment dois-je paramétrer C::B pour que la DLL obtenue après compilation/édition de liens exporte des symboles non décorés pour ces deux fonctions (donc "test" et "DllMain" et pas "_Z4testv" et "_Z7DllMainP11HINSTANCE__mPv@12"), afin de permettre :
- l'appel automatique de "DllMain()" lorsque ma bibliothèque est attachée à un procesus ;
- l'utilisation de ' GetProcAddress(hMod,"test") ' pour obtenir l'adresse de ma fonction dans un programme (au lieu de ' GetProcAddress(hMod,"_Z4testv") ').
Notes :
- je n'ai rien contre le fait que des symboles décorés soient exportés en plus des symboles non décorés ;
- je veux que mon programme charge explicitement la DLL avec LoadLibrary(), c'est non négociable (et ne me demandez pas pourquoi : c'est hors sujet) ;
- j'aurai une nette préférence pour les solutions ne nécessitant pas d'éditer un fichier ".def" à la main ;
- le compilateur utilisé est GCC (MinGW).
Merci d'avance :)
DS.