Question

extern "C"
{
__declspec(dllexport) LRESULT CALLBACK MTest
}

L'utilisation de dépend, j'ai trouvé qu'il y avait encore du nom de nom même en utilisant extern "C".

Était-ce utile?

La solution

La seule façon d'obtenir des noms vraiment non non décorés avec __DeclsSpec (DLLEXPORT) est de les exporter avec la convention d'appel __cdecl. Le rappel devient __stdcall, qui décore la forme "C" du nom avec un _ leader et des @bytes.

Sinon, vous pouvez utiliser un fichier .def, ce qui est une douleur. Un autre moyen spécifique à MSVC consiste à intégrer A /EXPORTER Directive dans le fichier d'objet (ou passer en tant que paramètre de liaison explicite)

#pragma comment(linker, "/EXPORT:ExportSymbol=DecoratedName");

Pour une raison quelconque = Une partie de la directive n'est pas répertoriée dans l'aide

Autres conseils

C'est une décoration de nom plutôt que de mangager. Vous devez déclarer le nom non décoré dans un fichier DEF, puis vous obtiendrez le comportement que vous recherchez.

Ne pas être un programmeur visuel C ++ La première pensée qui me vient à l'esprit est ... "Est-ce que l'une de ces macros lresult ou rappel introduisent la convention d'appel standard?" Les noms mutilés ont-ils @number_of_bytes_of_paramater_list ou des caractères qui leur ont dépensé les types réels qui leur sont annoncés?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top