我正在尝试使用 __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。