declspec et stdcall vs declspec seulement

Je suis une nouvelle personne à la dll C++ à l'importation du sujet et peut être ma question est très simple, mais je ne peux pas le trouver sur google.

J'ai une question très simple en C++ win32 dll:

#include <iostream>

using namespace std;

extern "C"
{
    __declspec(dllexport) void __stdcall DisplayHellowFromDLL()
    {
        cout<<"Hi"<<endl;
    }
}

Quand j'ai appeler cette méthode à partir de C# je n'ai pas de problème, voici le code C#

namespace UnmanagedTester
{
    class Program
    {
        [DllImport(@"C:\CGlobalDll")]
        public static extern void DisplayHellowFromDLL();

        static void Main(string[] args)
            {
                Console.WriteLine("This is C# program");
                DisplayHellowFromDLL();
            }
        }
    }

Comme je l'ai attendu la sortie est: "C'est le programme C#" "Salut".

Maintenant si je change la déclaration de la fonction C:

__declspec(dllexport) void DisplayHellowFromDLL()

sans __stdcall, je n'ai pas de problème, et la question est:

Quand dois-je vraiment besoin de __declspec(dllexport) TYPE __stdcall et quand je peux utiliser seulement __declspec(dllexport) TYPE ?

Merci beaucoup.

OriginalL'auteur ilyaw77 | 2011-06-13