CS50 filter项目执行make helpers.c时报undefined reference to `main`错误求助
问题原因分析
链接报错解决
你遇到的undefined reference to 'main'错误和filter.c、bmp.h文件无关,属于编译操作错误:
- 你当前的
helpers.c仅实现了灰度、复古、翻转、模糊四个图像处理工具函数,没有程序必需的入口main函数,main函数定义在作业提供的filter.c文件中 - 报错信息显示你执行的是
make helpers命令,会尝试把helpers.c单独编译为可执行文件,自然找不到入口函数。正确的编译命令为make filter - 如果手动执行编译命令,需要同时传入两个源文件并链接数学库,命令为
clang -o filter filter.c helpers.c -lm
现有代码逻辑bug
你的grayscale灰度转换函数存在赋值逻辑错误,当前写的是:
int average = (round)(total / 3); average = image[i][j].rgbtGreen = image[i][j].rgbtRed = image[i][j].rgbtBlue;
第二行代码会把像素原来的蓝色值依次赋值给红色、绿色通道和average变量,你之前计算的平均灰度值完全没有生效,需要改成:
int average = (round)(total / 3); image[i][j].rgbtGreen = image[i][j].rgbtRed = image[i][j].rgbtBlue = average;
其他三个函数的逻辑没有问题。
内容的提问来源于stack exchange,提问作者Nico
相关产品推荐
相关产品推荐

