围棋毅 2019-08-04 20:38
浏览 615

Dev-cpp加载图片时爆此错:collect2.exe [Error] ld returned 1 exit status

我用Dev-cpp编辑器编辑以下程序,报了collect2.exe [Error] ld returned 1 exit status这样的错,如何解决?

#include<bits/stdc++.h>
#include<Windows.h>
using namespace std;
int main ()
{
    char fileName[30];                        //定义打开图像名字
    char *buf;                                //定义文件读取缓冲区
    char *p;
    int r,g,b,pix;
    HWND wnd;                                 //窗口句柄
    HDC dc;                                   //绘图设备环境句柄
    FILE *fp;                                 //定义文件指针
    FILE *fpw;                                //定义保存文件指针
    DWORD w,h;                                //定义读取图像的长和宽
    DWORD bitCorlorUsed;                      //定义
    DWORD bitSize;                            //定义图像的大小
    BITMAPFILEHEADER bf;                      //图像文件头
    BITMAPINFOHEADER bi;                      //图像文件头信息
    cout<<"请输入要打开文件的名字:(如:e:\\1.bmp)";
    cin>>fileName;
    if((fp=fopen(fileName,"rb"))==NULL)
    {
       cout<<"文件未找到!";
       exit(0);
    }
    fread(&bf,sizeof(BITMAPFILEHEADER),1,fp);//读取BMP文件头文件
    fread(&bi,sizeof(BITMAPINFOHEADER),1,fp);//读取BMP文件头文件信息
    w=bi.biWidth;                            //获取图像的宽
    h=bi.biHeight;                           //获取图像的高
    bitSize=bi.biSizeImage;                  //获取图像的size
    buf=(char*)malloc(w*h*3);                //分配缓冲区大小
    fseek(fp,long(sizeof(BITMAPFILEHEADER)+sizeof(BITMAPINFOHEADER)),0);//定位到像素起始位置
    fread(buf,1,w*h*3,fp);                   //开始读取数据
    wnd=GetForegroundWindow();               //获取窗口句柄
    dc=GetDC(wnd);                           //获取绘图设备
    int x=40;
    int y=40;
    p=buf;
    for(int j=0;j<h;j++)
    {
        for(int i=0;i<w;i++)
        {
            b=*p++;g=*p++;r=*p++;
            pix=RGB(r,g,b);
            SetPixel(dc,x+i,y+h-j,pix);
        }
    }
    fpw=fopen("LenaSaved.bmp","wb");
    fwrite(&bf,sizeof(BITMAPFILEHEADER),1,fpw);  //写入文件头
    fwrite(&bi,sizeof(BITMAPINFOHEADER),1,fpw);  //写入文件头信息
    p=buf;
    for(int j=0;j<h;j++)
    {
        for(int i=0;i<w*3;i++)
        {
            fwrite(p++,1,1,fpw);
        }
    }
    fclose(fpw);
    fclose(fp);
    //return fp;
}

  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
    • ¥15 ubuntu虚拟机打包apk错误
    • ¥199 rust编程架构设计的方案 有偿
    • ¥15 回答4f系统的像差计算
    • ¥15 java如何提取出pdf里的文字?
    • ¥100 求三轴之间相互配合画圆以及直线的算法
    • ¥100 c语言,请帮蒟蒻写一个题的范例作参考
    • ¥15 名为“Product”的列已属于此 DataTable
    • ¥15 安卓adb backup备份应用数据失败
    • ¥15 eclipse运行项目时遇到的问题