stdcall nom de déformation à l'aide extern c et dllexport vs module de définitions (msvc++)

J'ai essayé d'exporter d'un simple test de la fonction d'une dll pour fonctionner avec une application (pour info: mIRC) qui spécifie la convention d'appel:

int __stdcall test_func(HWND mWnd, HWND aWnd, char *data, char *parms, BOOL show, BOOL nopause)

Maintenant, pour appeler à partir de l'application, je serais en utilisant test_func mais j'ai remarqué en raison de name mangling il n'est pas aussi simple que je l'avais pensé.

À travers des sujets similaires ici, j'en suis venu à comprendre que l'utilisation de extern "C" en combinaison avec __declspec(dllexport) est une équivalence (un peu) la méthode de suppression d'une déformation de module de définitions.def). Cependant, lors de l'utilisation de la extern/dllexport méthode de ma fonction (par exemple) est toujours _test_func@numéros de alors que l' .def supprimé toutes les mutilations que nécessaire pour utiliser l'application, j'ai besoin d'exporter.

Quelqu'un pourrait-il expliquer pourquoi il en est? Je suis juste curieux de connaître les deux méthodes. Merci!

OriginalL'auteur mina | 2010-12-28