gpt4 book ai didi

c - Dlsym:从不同大小的整数转换为指针

转载 作者:太空宇宙 更新时间:2023-11-04 07:38:19 25 4
gpt4 key购买 nike

我真的很讨厌在这里提问。但我一直在看some of the other posts ,并且诸如此类的解决方案似乎不起作用。这可能是我对语法的误解。

我正在改进我的一些旧代码。问题中的函数循环通过一些加载的模块并运行一个函数。当我在 x86 上时,这段代码运行良好,但跳转到 64 位时一切都搞砸了。

int FindCmd(ArgS *Args)
{
/* We need to check our loaded modules for the appropriate command. */
int found = 0;

ModS *Current;

for(Current = Modules; Current != NULL; Current = Current->Next)
{ /* Cycle through the modules. */

int (*OnConsoleCmd)(RootS *IRC, ArgS *Args, McapiS *Mcapi);

/* The below statement is the problem. */
OnConsoleCmd = (int (*)(RootS *, ArgS *, McapiS *))dlsym(Current->Handle, "OnConsoleCmd");
/* The above statement is the problem. */

if(OnConsoleCmd != NULL)
{
if(OnConsoleCmd(IRC, Args, Mcapi) != 0) /* Run command. */
found++;
}
}

return found;
}

我收到以下警告:

exec/src/input.c:98:18: warning: cast to pointer from integer of different size

当然还有我的程序段错误。我知道这只是一个转换问题,但我不知道一个简单且便携的解决方案。如果您需要更多信息,请告诉我。谢谢。

最佳答案

这很可能是因为您没有 dlsym() 的原型(prototype)在范围内,因此它被隐式声明为 int dlsym() , 这是错误的。

如果添加 #include <dlfcn.h>到使用 dlsym() 的文件,您将得到正确的声明,它应该可以工作。

关于c - Dlsym:从不同大小的整数转换为指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7019820/

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