我有一个第三方 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/