gpt4 book ai didi

c++ - 如何在 C++ 中使用来自 dll 的结构?

转载 作者:太空狗 更新时间:2023-10-29 23:07:31 24 4
gpt4 key购买 nike

我有一个第三方 dll,没有要在我的 C++ 应用程序中使用的库或头文件。这就是我使用 LoadLibrary(_T("xxx.dll")) 加载它的原因。我可以使用 GetProcAddress() 函数实现它的功能。

此 dll 中有一个结构,我也必须访问它。我应该怎么做才能到达并使用它?我查看了该站点,但只找到了 c# 而不是 c++ 的示例。在c++中这样做的方法是什么?

谢谢...

最佳答案

简答:您可以使用 GetProcAddress 检索声明为结构的变量的地址。来自 the GetProcAddress man page :

从指定的动态链接库 (DLL) 中检索导出函数或变量 的地址。

该函数的名称应该是 GetSymAddress 而不是 GetProcAddress,但我离题了。

长答案:

前提是 DLL 包含一个类型为 struct Foo 的符号实例:

typedef struct { int x; int array[100]; } Foo;
__declspec( dllexport ) struct Foo Bar =
{
0xdeadbeef,{0}
};

可以检索变量Bar的地址,前提是你已经加载了dll并且在某处有它的hModule句柄:

struct Foo* Bar = GetProcAddress(hModule,"Bar");

无法检索结构本身的定义,但无论如何我认为这不是您的意思。

注意:我忽略了名称修改、extern“C”声明以及您可能需要考虑的其他一些事项以阐明要点,我假设读者已经对手头的主题有了基本的了解。

关于c++ - 如何在 C++ 中使用来自 dll 的结构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12587197/

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