【发布时间】:2014-04-05 15:51:08
【问题描述】:
我正在尝试使用 getprocaddress 查找变量的地址。但是我在这方面遇到了问题。问题是我将变量的名称一一存储在 char buff[100] 中,就像在循环中一样。那个时候我不知道变量的类型。那么如何在没有类型转换的情况下使用它。我尝试使用 void * ptr 来避免类型转换。我得到 ptr 的值为零。
void *ptr;
HMODULE hdl;
char buff[100];
char word[100];
char ch1;
int total_item=0;
META_INFO_FILE=fopen("META.txt","r");
do {
ch1 = fscanf(META_INFO_FILE,"%s",word);
if ((word[0]== '_'))
{
strcpy(META_buff,word+1);
hdl = GetModuleHandle (NULL); // handle of executable
ptr =GetProcAddress (hdl, META_buff);
total_item++;
} while (ch1 != EOF);
谢谢
【问题讨论】:
-
您是说如果您使用演员表,您会在
ptr中获得良好的价值吗?我怀疑铸造(或不铸造)与您的问题无关,所以我想知道您为什么要问这个问题?我猜您的问题是您要求GetProcAddress()解析模块未导出的名称。 -
@MichaelBurr:我用这个函数给直接变量名加上强制转换然后我得到了值但没有强制转换我没有得到。在这个模块中,我的问题是你所理解的
-
顺便说一句,您至少应该提交格式正确的代码。
-
@A_Gupta:如果您有一个工作示例,其中包含您想要摆脱的演员表,您应该将它与您尝试移动到的非工作代码一起发布。此外,您应该尝试发布尽可能接近可编译的代码。例如,您发布的
do/while(或if)声明格式不正确。