假设我在DLL中具有以下结构定义:
typedef struct {
double varOne;
double varTwo;
} structOne;
structOne myStruct;
然后可以从加载DLL的主应用程序中执行以下操作:
structOne * sPtr = (structOne *)GetProcAddress(libraryHandle, "myStruct");
我的问题是,是否有可能做类似的事情:
double * dPtr = (double *)GetProcAddress(libraryHandle, "myStruct.varOne");
如果您了解我想要的,那是可能的;语法是什么?
如果不可能的话;为什么?
如果您不理解我的问题;在评论中这么说!
问候和希望的答案!
最佳答案
不,这是不可能的。 GetProcAddress
仅有权访问动态链接器信息。有关类/结构的布局的信息是编译器信息的一部分。编译器将此信息放入PDB文件中。它不是直接存在于二进制模块中。 GetProcAddress
只能访问EXE / DLL文件中存储的信息。 PDB文件主要由调试器使用,只有极少数例外,例如StackWalk
。