__stdcallを使用して、関数名と関数ポインターのマップを作成しようとしています。現在、関数ポインタを取得する方法は次のとおりです。
typedef int (CALLBACK* InitializeDLL)(int,int);
InitializeDLL initializeDLL = (InitializeDLL)GetProcAddress(hInstanceLibrary, "InitializeDLL");
そして今私の地図:
map<string, int *__stdcall> mapInt;
mapInt["InitializeDLL"] = initializeDLL; //throws error for "InitializeDLL cannot be assigned to entity of type int*"
そのエラーはまさに私が期待したものですが、明らかに__stdcallの前にタイプを追加する必要があります。前面の「int」を削除すると、次のように文句を言います。
Error: expected a type specifier
「int」が前面に含まれているマップオブジェクトを作成した後でコンパイルしようとすると、エラーがスローされます。
error C2059: syntax error : '>'
これは私にはあまり意味がありません。では、マップのタイプとして__stdcallを使用する正しい方法は何ですか?その前にintを追加することは私には疑わしいように思えましたが、追加しないと、指定された型が必要であると文句を言います。
また、混乱を招く場合は、CALLBACKは__stdcallの#defineです。