x86_64架构下subhook_unprotect符号未找到链接错误求助
解决链接错误:未找到subhook_unprotect符号
问题原因
subhook库中的subhook_unprotect是平台相关的封装函数,编译subhook.c时若未指定对应平台的编译宏,编译器不会生成该函数的实现,最终导致链接阶段找不到符号。针对x86_64架构的macOS,需确保编译时启用内存保护相关的宏定义。
解决办法
修改编译命令,为subhook.c添加SUBHOOK_USE_MPROTECT编译宏(macOS下通过mprotect处理内存权限),同时明确指定架构参数:
g++ -dynamiclib -fPIC -v -o finalcalling.dylib finalversion.cpp /Users/~/Desktop/c/subhook-master/subhook.c -std=c++11 -DSUBHOOK_USE_MPROTECT -arch x86_64
额外检查点
- 确认subhook.c文件完整,subhook-master源码包中包含macOS平台的mprotect实现代码
- 若使用Apple Silicon(arm64)架构,将
-arch x86_64替换为-arch arm64,宏定义保持不变
内容的提问来源于stack exchange,提问作者Big Bored
相关产品推荐
相关产品推荐

