2009-02-25 6 views
0

Je voudrais savoir ce que font les déclarations suivantes. Je les ai vus dans un code C sur le code MSVisual Studio Compiled.Quelle est l'explication derrière la déclaration/mot-clé ci-dessous?

extern "C" __declspec (dllexport)

extern "C" __declspec (dllimport)

Je sais un peu qu'ils sont utilisés pour déclarer une liaison externe pour les fonctions (fonctionnelles définies dans différentes sources file.But je voudrais savoir en détail comment cela fonctionne.

-Ajit

Répondre

1

dllexport indique au compilateur de générer un .lib file. dllimport indique au compilateur de regarder dans un fichier .lib pour la fonction décla ration (sa définition sera dans une DLL).

1

Cela signifie que les fonctions/classes qui le suivent sont visibles et accessibles à travers une limite de DLL de sorte que vous pouvez lier contre eux et les appeler d'un autre code

3

La partie extern "C" dit un compilateur C++ que l'élément étant déclaré devrait utilisez C linkage, ce qui signifie que le nom ne sera pas altéré (ou sera modifié de la même manière qu'un compilateur C). Cela permet à l'élément d'être lié au code C et à la plupart des autres langages, car la liaison C est généralement la norme utilisée sur une plate-forme.

Les éléments __declspec(dllexport) et __declspec(dllimport) sont des attributs non standard qui indiquent au compilateur que l'élément doit être exporté (ou importé) à partir d'une DLL. L'attribut __declspec() est pris en charge sur les compilateurs MS et probablement d'autres compilateurs qui ciblent Windows. Je ne suis pas sûr si GCC le fait ou non. Les autres attributs de classe de stockage pouvant être spécifiés avec __declspec() (au moins dans MSVC) incluent uuid(), naked, deprecated et d'autres qui fournissent au compilateur des informations sur la manière dont un objet ou une fonction doit être compilé.

Questions connexes