假设我在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

09-20 16:55