编译报错:undefined reference to `GetProcessMemoryInfo' 求助
问题解决:undefined reference to
GetProcessMemoryInfo 核心原因:链接库的顺序错误
GCC链接器按命令行顺序处理输入文件:先处理源文件/目标文件,遇到未定义符号时,才会从后续的库中查找对应实现。如果把库放在源文件前面,链接器处理库时还没遇到需要这些符号的源文件,就不会保留库中的相关符号,后续处理源文件时自然找不到GetProcessMemoryInfo的定义。
修复方法
修改你的批处理脚本,将链接库参数%LINK%移到源文件%SRC%之后:
set FLAGS=-Wall -Wextra -g3 -O -Werror set LINK=-static-libgcc -lpsapi -lkernel32 set SRC=*.c src/*.c test/*c set OUT_FILE=-o build/build.exe gcc %FLAGS% %SRC% %LINK% %OUT_FILE%
额外检查点(可选)
- 确认你的MinGW/GCC环境中存在
libpsapi.a或psapi.lib(通常位于工具链的lib目录下) - 如果仍有问题,可以尝试在代码开头添加宏定义,确保PSAPI相关函数声明被正确展开:
#define _WIN32_WINNT 0x0501 #include <windows.h> #include <psapi.h>
内容的提问来源于stack exchange,提问作者Goh
相关产品推荐
相关产品推荐

