gpt4 book ai didi

c++ - 调用函数指针会导致段错误?

转载 作者:行者123 更新时间:2023-11-28 01:01:54 24 4
gpt4 key购买 nike

由于某些原因,当我尝试调用 CFShow_New 时,以下代码会导致 SIGSEGV:

类型定义:

typedef void* (*CFShow_XX)(CFTypeRef lol);

实际代码:

ImageLoaderMachO* loader =
dyld::getDyldImage("/XXX/CoreFoundation");

Symbol cfshow_sym = loader->findSymbol("_CFShow");
CFShow_XX* CFShow_New = (CFShow_XX*)cfshow_sym.nl.n_value;

assert(cfshow_sym.nl.n_value == (uint32_t)CFShow);

CFStringRef str = CFSTR("Test123");

CFShow(str); /* Works */
(*CFShow_New)(str); /* SIGSEGV's */

可能是什么问题? CFShow 是一个 extern "C",这会导致它吗?如果是这样,我该如何解决?

最佳答案

您定义了指向函数指针的指针:

CSShow_XX CFShow_New = (CFShow_XX)cfshow_sym.nl.n_value;

并调用:

CSShow_New(str);

关于c++ - 调用函数指针会导致段错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8280764/

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