gpt4 book ai didi

c - 截图程序编译问题

转载 作者:行者123 更新时间:2023-11-30 18:05:06 24 4
gpt4 key购买 nike

我试图让这个屏幕截图程序工作(如下),它将屏幕图片保存为 bmp 文件,当我尝试使用 gcc 编译它时,出现以下错误:

/tmp/ccetmoRd.o:Screenshot.c:(.text+0x128):对 _GetDIBits@28'
/tmp/ccetmoRd.o:Screenshot.c:(.text+0x1e1): undefined reference to
的 undefined reference _GetDIBits@28'collect2:ld返回1退出状态

有什么想法吗?

非常感谢。

代码:

#include <stdlib.h>
#include <windows.h>
#include <stdio.h>

void TakeScreenShot(char* filename);

int main()
{
TakeScreenShot("c:\\Screenshot.bmp");
return 0;
}

//
// Side Effects:N/A
//
//This code is copyrighted and has// limited warranties.Please see http://
// www.Planet-Source-Code.com/vb/scripts/Sh
// owCode.asp?txtCodeId=10754&lngWId=3//for details.//**************************************
//

void TakeScreenShot(char* filename)
{
keybd_event(VK_SNAPSHOT, 0x45, KEYEVENTF_EXTENDEDKEY, 0);
keybd_event(VK_SNAPSHOT, 0x45, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, 0);
HBITMAP h;

OpenClipboard(NULL);
h = (HBITMAP)GetClipboardData(CF_BITMAP);
CloseClipboard();
HDC hdc=NULL;

FILE*fp=NULL;
LPVOID pBuf=NULL;
BITMAPINFO bmpInfo;
BITMAPFILEHEADER bmpFileHeader;

do
{
hdc=GetDC(NULL);
ZeroMemory(&bmpInfo,sizeof(BITMAPINFO));
bmpInfo.bmiHeader.biSize=sizeof(BITMAPINFOHEADER);
GetDIBits(hdc,h,0,0,NULL,&bmpInfo,DIB_RGB_COLORS);

if(bmpInfo.bmiHeader.biSizeImage<=0)
bmpInfo.bmiHeader.biSizeImage=bmpInfo.bmiHeader.biWidth*abs(bmpInfo.bmiHeader.biHeight)*(bmpInfo.bmiHeader.biBitCount+7)/8;
if((pBuf = malloc(bmpInfo.bmiHeader.biSizeImage))==NULL)
{
MessageBox( NULL, "Unable to Allocate Bitmap Memory", "Error", MB_OK|MB_ICONERROR);
break;
}
bmpInfo.bmiHeader.biCompression=BI_RGB;
GetDIBits(hdc,h,0,bmpInfo.bmiHeader.biHeight,pBuf, &bmpInfo, DIB_RGB_COLORS);

if((fp = fopen(filename,"wb"))==NULL)
{
MessageBox(NULL, "Unable to Create Bitmap File", "Error", MB_OK|MB_ICONERROR);
break;
}

bmpFileHeader.bfReserved1=0;
bmpFileHeader.bfReserved2=0;
bmpFileHeader.bfSize=sizeof(BITMAPFILEHEADER)+sizeof(BITMAPINFOHEADER)+bmpInfo.bmiHeader.biSizeImage;
bmpFileHeader.bfType='MB';
bmpFileHeader.bfOffBits=sizeof(BITMAPFILEHEADER)+sizeof(BITMAPINFOHEADER);

fwrite(&bmpFileHeader,sizeof(BITMAPFILEHEADER),1,fp);
fwrite(&bmpInfo.bmiHeader,sizeof(BITMAPINFOHEADER),1,fp);
fwrite(pBuf,bmpInfo.bmiHeader.biSizeImage,1,fp);
}
while(0);

if(hdc)
ReleaseDC(NULL,hdc);
if(pBuf)
free(pBuf);

if(fp)
fclose(fp);
}

最佳答案

自从功能请求 mark a comment as an answer仍被拒绝,我将上述解决方案复制到此处。

已解决:下载了 gdi32 库并解决了问题。谢谢你的提示! – 杰里米

关于c - 截图程序编译问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6880335/

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