我正在尝试使用 __stdcall 创建函数名称和函数指针的映射。这是我目前获取函数指针的方式:
typedef int (CALLBACK* InitializeDLL)(int,int);
InitializeDLL initializeDLL = (InitializeDLL)GetProcAddress(hInstanceLibrary, "InitializeDLL");
现在我的 map :
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”的 map 对象后尝试编译它,它会抛出错误:
error C2059: syntax error : '>'
这对我来说意义不大。那么使用 __stdcall 作为 map 类型的正确方法是什么?在它前面添加 int 对我来说似乎很可疑,但如果我不添加它,它就会提示它需要指定的类型。
此外,CALLBACK 是 __stdcall 的#define,如果这令人困惑的话。
最佳答案
你像使用类型一样使用 __stdcall
,但它不是一个。您需要在映射定义中使用您的函数指针类型。
map<string, InitializeDLL> mapInt;
我不确定您为什么首先尝试做其他事情,因为您已经在其他地方使用过这种类型,难道不应该很明显这里也需要它吗?
关于c++ - 创建 __stdcall 的映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11124367/