gpt4 book ai didi

c++ - 将 typdef 函数指针导出到 dll

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:50:26 30 4
gpt4 key购买 nike

我正在做一个练习,给我一个声明了几个函数的头文件,并要求我创建一个动态加载的 DLL,它可以导出这些函数。对我来说最困难的部分是头文件将函数声明为函数指针,这让我很困惑。以下是如何声明:

typedef int32_t* (__stdcall* T_func)(int32_t* a);

说明说我的 DLL 应该导出函数“func”,只要 DLL 实现接口(interface)(如上所示),我就可以按照自己的意愿去做。

我无法创建函数 T_func,因为它是 typedef,而且我无法创建类型为 T_func 的名为 func 的函数。我很困惑我应该如何根据他们给我的东西来声明一个函数。创建一个名为 func 的函数,其输入和返回类型与 T_func 相同?

最佳答案

您只需在 DLL 中将一个函数声明为:

int32_t* __stdcall func(int32_t* a);

然后,在客户端代码中,您动态绑定(bind):

T_func pFunc = (T_func)GetProcAddress(hModule, "func");

这就是 typedef 派上用场的地方。 DLL 代码不使用它。

更新:您的问题被标记为 C++,您可能需要定义为 extern "C" 的函数,否则您会得到一个 C++ 损坏的名称。并且由于您可能正在使用 MS-Windows

extern "C" {
declspec(dllexport) int32_t* __stdcall func(int32_t* a);
}

关于c++ - 将 typdef 函数指针导出到 dll,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30005085/

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