gpt4 book ai didi

c++ - 创建 __stdcall 的映射

转载 作者:搜寻专家 更新时间:2023-10-31 00:01:08 24 4
gpt4 key购买 nike

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

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com