截图C ++ cli [英] Taking a screenshot C++ cli

查看:450
本文介绍了截图C ++ cli的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我看到过以下代码,它截取屏幕截图并将其保存为jpg,我已经设法编译并运行它作为win32 CONSOLE应用程序,



我试图使用下面的代码在WindowsForm / CLI(只有一个按钮,应该截图)项目,我有以下错误:

  1> screenshoter.obj:warning LNK4248:未解析的typeref令牌(0100002C)为'Gdiplus.GpCachedBitmap';映像可能无法运行
1> screenshoter.obj:error LNK2028:未解析的令牌(0A000017)externCint __stdcall ReleaseDC(struct HWND__ *,struct HDC__ *)(?ReleaseDC @@ $$ J18YGHPAUHWND __ @@函数private:void __clrcall screenshoter :: Form1 :: gdiscreen(void)(?gdiscreen @ Form1 @ screenshoter @@ $$ FA $ AAMXXZ)引用的函数PAUHDC __ @@@ Z)
1> screenshoter.obj:错误LNK2028:在函数private:void __clrcall中引用的未解析的标记(0A000018)externCint __stdcall DeleteObject(void *)(?DeleteObject @@ $$ J14YGHPAX @ Z)screenshoter :: Form1 :: gdiscreen(void) (?gdiscreen @ Form1 @ screenshoter @@ $$ FA $ AAMXXZ)
1> screenshoter.obj:error LNK2028:未解析的标记(0A000019)externCint __stdcall BitBlt(struct HDC__ *,int,int ,int,int,struct HDC__ *,int,int,unsigned long)(?BitBlt @@ $$ J236YGHPAUHDC __ @@ HHHH0HHK @ Z)在函数private:void __clrcall screenshter :: Form1 :: gdiscreen(void) (?gdiscreen @ Form1 @ screenshoter @@ $$ FA $ AAMXXZ)
1> screenshoter.obj:error LNK2028:unresolved token(0A00001A)externCvoid * __stdcall SelectObject(struct HDC__ *,void *) void?__clrcall screenshoter :: Form1 :: gdiscreen(void)(?gdiscreen @ Form1 @ screenshoter @@ $$ FA $ AAMXXZ)引用的(?SelectObject @@ $$ J18YGPAXPAUHDC __ @@ PAX @ Z)
1> screenshoter.obj:error LNK2028:未解析的标记(0A00001B)externCstruct HBITMAP__ * __stdcall CreateCompatibleBitmap(struct HDC__ *,int,int)(?CreateCompatibleBitmap @@ $$ J212YGPAUHBITMAP __ @@ PAUHDC __ @@ HH @ Z)引用函数private:void __clrcall screenshoter :: Form1 :: gdiscreen(void)(?gdiscreen @ Form1 @ screenshoter @@ $$ FA $ AAMXXZ)
1> screenshoter.obj:error LNK2028 :function unsigned char(0A00001C):在函数private:void __clrcall中引用的未解析的标记(0A00001C)externCstruct HDC__ * __stdcall CreateCompatibleDC(struct HDC__ *)(?CreateCompatibleDC @@ $$ J14YGPAUHDC __ @@ PAU1 @ :gdiscreen(void)(?gdiscreen @ Form1 @ screenshoter @@ $$ FA $ AAMXXZ)
1> screenshoter.obj:error LNK2028:unresolved token(0A00001D)externCint __stdcall GetSystemMetrics(int) void?__clrcall screenshoter :: Form1 :: gdiscreen(void)(?gdiscreen @ Form1 @ screenshoter @@ $$ FA $ AAMXXZ)
(?GetSystemMetrics @@ $$ J14YGHH @ Z) 1> screenshoter.obj:error LNK2028:未解析的令牌(0A00001E)externCstruct HDC__ * __stdcall GetDC(struct HWND__ *)(?GetDC @@ $$ J14YGPAUHDC __ @@ PAUHWND __ @@@ Z) private:void __clrcall screenshoter :: Form1 :: gdiscreen(void)(?gdiscreen @ Form1 @ screenshoter @@ $$ FA $ AAMXXZ)
1> screenshoter.obj:error LNK2019:未解析的外部符号externC void __clrcall screenshoter :: Form1 :: gdiscreen(void)()中引用的int __stdcall ReleaseDC(struct HWND__ *,struct HDC__ *)(?ReleaseDC @@ $$ J18YGHPAUHWND __ @@ PAUHDC __ @@@ Z) ?gdiscreen @ Form1 @ screenshoter @@ $$ FA $ AAMXXZ)
1> screenshoter.obj:error LNK2019:未解析的外部符号externCint __stdcall DeleteObject(void *)(?DeleteObject @@ $$在函数private:void __clrcall screenshoter :: Form1 :: gdiscreen(void)(?gdiscreen @ Form1 @ screenshoter @@ $$ FA $ AAMXXZ)引用的函数J4YGHPAX @ Z)
1> screenshoter.obj:error LNK2019 :未解析的外部符号externCint __stdcall BitBlt(struct HDC__ *,int,int,int,int,struct HDC__ *,int,int,unsigned long)(?BitBlt @@ $$ J236YGHPAUHDC __ @ HHHH0HHK @ Z )在函数private:void __clrcall中引用的函数screenhoter :: Form1 :: gdiscreen(void)(?gdiscreen @ Form1 @ screenshoter @@ $$ FA $ AAMXXZ)
1> screenshoter.obj:error LNK2019:unresolved external符号externCvoid * __stdcall SelectObject(struct HDC__ *,void *)(?SelectObject @@ $$ J18YGPAXPAUHDC __ @@ PAX @ Z)引用函数private:void __clrcall screenshoter :: Form1 :: gdiscreen )(?gdiscreen @ Form1 @ screenshoter @@ $$ FA $ AAMXXZ)
1> screenshoter.obj:error LNK2019:未解析的外部符号externCstruct HBITMAP__ * __stdcall CreateCompatibleBitmap(struct HDC__ *,int,在函数private:void __clrcall screenshoter :: Form1 :: gdiscreen(void)(?gdiscreen @ Form1 @ screenshoter @@ $$)中引用的函数int()CreateCompatibleBitmap @@ $$ J212YGPAUHBITMAP __ @@ PAUHDC __ @@ HH @ FA $ AAMXXZ)
1> screenshoter.obj:error LNK2019:未解析的外部符号externCstruct HDC__ * __stdcall CreateCompatibleDC(struct HDC__ *)(?CreateCompatibleDC @@ $$ J14YGPAUHDC __ @@ PAU1 @@ Z )在函数private:void __clrcall中引用的函数screenhoter :: Form1 :: gdiscreen(void)(?gdiscreen @ Form1 @ screenshoter @@ $$ FA $ AAMXXZ)
1> screenshoter.obj:error LNK2019:unresolved external在函数private:void __clrcall screenshoter :: Form1 :: gdiscreen(void)(?gdiscreen @ Form1 @ screenshoter)中引用的符号externCint __stdcall GetSystemMetrics(int)(?GetSystemMetrics @@ $$ J14YGHH @ @@ $$ FA $ AAMXXZ)
1> screenshoter.obj:error LNK2019:未解析的外部符号externCstruct HDC__ * __stdcall GetDC(struct HWND__ *)(?GetDC @@ $$ J14YGPAUHDC __ @@在函数private:void __clrcall screenshoter :: Form1 :: gdiscreen(void)(?gdiscreen @ Form1 @ screenshoter @@ $$ FA $ AAMXXZ)中引用的PAUHWND __ @@@ Z)



注意:我已包含所有需要的文件



我在MSDN中查找,但我真的不能理解错误messeges。此外,我曾经遇到过类似的消息,我解决了,但添加了一个.lib文件



这次我尝试添加,但是没有解决问题

  #pragma comment(lib,GdiPlus.lib)


解决方案

这些函数在gdi32.lib - 不是gdiplus.lib - 中声明,有些可能在user32.lib。


I've seen the following code that takes a screenshot and saves it as jpg, I've managed to compile and run it as win32 CONSOLE application,

But when I tried to use the following code in A windowsForm/CLI (there is just a button that should take a screenshot) project, I got the following errors:

1>screenshoter.obj : warning LNK4248: unresolved typeref token (0100002C) for 'Gdiplus.GpCachedBitmap'; image may not run
1>screenshoter.obj : error LNK2028: unresolved token (0A000017) "extern "C" int __stdcall ReleaseDC(struct HWND__ *,struct HDC__ *)" (?ReleaseDC@@$$J18YGHPAUHWND__@@PAUHDC__@@@Z) referenced in function "private: void __clrcall screenshoter::Form1::gdiscreen(void)" (?gdiscreen@Form1@screenshoter@@$$FA$AAMXXZ)
1>screenshoter.obj : error LNK2028: unresolved token (0A000018) "extern "C" int __stdcall DeleteObject(void *)" (?DeleteObject@@$$J14YGHPAX@Z) referenced in function "private: void __clrcall screenshoter::Form1::gdiscreen(void)" (?gdiscreen@Form1@screenshoter@@$$FA$AAMXXZ)
1>screenshoter.obj : error LNK2028: unresolved token (0A000019) "extern "C" int __stdcall BitBlt(struct HDC__ *,int,int,int,int,struct HDC__ *,int,int,unsigned long)" (?BitBlt@@$$J236YGHPAUHDC__@@HHHH0HHK@Z) referenced in function "private: void __clrcall screenshoter::Form1::gdiscreen(void)" (?gdiscreen@Form1@screenshoter@@$$FA$AAMXXZ)
1>screenshoter.obj : error LNK2028: unresolved token (0A00001A) "extern "C" void * __stdcall SelectObject(struct HDC__ *,void *)" (?SelectObject@@$$J18YGPAXPAUHDC__@@PAX@Z) referenced in function "private: void __clrcall screenshoter::Form1::gdiscreen(void)" (?gdiscreen@Form1@screenshoter@@$$FA$AAMXXZ)
1>screenshoter.obj : error LNK2028: unresolved token (0A00001B) "extern "C" struct HBITMAP__ * __stdcall CreateCompatibleBitmap(struct HDC__ *,int,int)" (?CreateCompatibleBitmap@@$$J212YGPAUHBITMAP__@@PAUHDC__@@HH@Z) referenced in function "private: void __clrcall screenshoter::Form1::gdiscreen(void)" (?gdiscreen@Form1@screenshoter@@$$FA$AAMXXZ)
1>screenshoter.obj : error LNK2028: unresolved token (0A00001C) "extern "C" struct HDC__ * __stdcall CreateCompatibleDC(struct HDC__ *)" (?CreateCompatibleDC@@$$J14YGPAUHDC__@@PAU1@@Z) referenced in function "private: void __clrcall screenshoter::Form1::gdiscreen(void)" (?gdiscreen@Form1@screenshoter@@$$FA$AAMXXZ)
1>screenshoter.obj : error LNK2028: unresolved token (0A00001D) "extern "C" int __stdcall GetSystemMetrics(int)" (?GetSystemMetrics@@$$J14YGHH@Z) referenced in function "private: void __clrcall screenshoter::Form1::gdiscreen(void)" (?gdiscreen@Form1@screenshoter@@$$FA$AAMXXZ)
1>screenshoter.obj : error LNK2028: unresolved token (0A00001E) "extern "C" struct HDC__ * __stdcall GetDC(struct HWND__ *)" (?GetDC@@$$J14YGPAUHDC__@@PAUHWND__@@@Z) referenced in function "private: void __clrcall screenshoter::Form1::gdiscreen(void)" (?gdiscreen@Form1@screenshoter@@$$FA$AAMXXZ)
1>screenshoter.obj : error LNK2019: unresolved external symbol "extern "C" int __stdcall ReleaseDC(struct HWND__ *,struct HDC__ *)" (?ReleaseDC@@$$J18YGHPAUHWND__@@PAUHDC__@@@Z) referenced in function "private: void __clrcall screenshoter::Form1::gdiscreen(void)" (?gdiscreen@Form1@screenshoter@@$$FA$AAMXXZ)
1>screenshoter.obj : error LNK2019: unresolved external symbol "extern "C" int __stdcall DeleteObject(void *)" (?DeleteObject@@$$J14YGHPAX@Z) referenced in function "private: void __clrcall screenshoter::Form1::gdiscreen(void)" (?gdiscreen@Form1@screenshoter@@$$FA$AAMXXZ)
1>screenshoter.obj : error LNK2019: unresolved external symbol "extern "C" int __stdcall BitBlt(struct HDC__ *,int,int,int,int,struct HDC__ *,int,int,unsigned long)" (?BitBlt@@$$J236YGHPAUHDC__@@HHHH0HHK@Z) referenced in function "private: void __clrcall screenshoter::Form1::gdiscreen(void)" (?gdiscreen@Form1@screenshoter@@$$FA$AAMXXZ)
1>screenshoter.obj : error LNK2019: unresolved external symbol "extern "C" void * __stdcall SelectObject(struct HDC__ *,void *)" (?SelectObject@@$$J18YGPAXPAUHDC__@@PAX@Z) referenced in function "private: void __clrcall screenshoter::Form1::gdiscreen(void)" (?gdiscreen@Form1@screenshoter@@$$FA$AAMXXZ)
1>screenshoter.obj : error LNK2019: unresolved external symbol "extern "C" struct HBITMAP__ * __stdcall CreateCompatibleBitmap(struct HDC__ *,int,int)" (?CreateCompatibleBitmap@@$$J212YGPAUHBITMAP__@@PAUHDC__@@HH@Z) referenced in function "private: void __clrcall screenshoter::Form1::gdiscreen(void)" (?gdiscreen@Form1@screenshoter@@$$FA$AAMXXZ)
1>screenshoter.obj : error LNK2019: unresolved external symbol "extern "C" struct HDC__ * __stdcall CreateCompatibleDC(struct HDC__ *)" (?CreateCompatibleDC@@$$J14YGPAUHDC__@@PAU1@@Z) referenced in function "private: void __clrcall screenshoter::Form1::gdiscreen(void)" (?gdiscreen@Form1@screenshoter@@$$FA$AAMXXZ)
1>screenshoter.obj : error LNK2019: unresolved external symbol "extern "C" int __stdcall GetSystemMetrics(int)" (?GetSystemMetrics@@$$J14YGHH@Z) referenced in function "private: void __clrcall screenshoter::Form1::gdiscreen(void)" (?gdiscreen@Form1@screenshoter@@$$FA$AAMXXZ)
1>screenshoter.obj : error LNK2019: unresolved external symbol "extern "C" struct HDC__ * __stdcall GetDC(struct HWND__ *)" (?GetDC@@$$J14YGPAUHDC__@@PAUHWND__@@@Z) referenced in function "private: void __clrcall screenshoter::Form1::gdiscreen(void)" (?gdiscreen@Form1@screenshoter@@$$FA$AAMXXZ)

Note: That I've included all the files needed

I looked up in MSDN, but I couldn't really understand the error messeges. Moreover, I had encountered similar messages in the past, i solved it but adding a .lib file

This time I tried adding, however it didn't solve the problem

#pragma comment( lib, "GdiPlus.lib" )

解决方案

Those functions are declared in gdi32.lib - not gdiplus.lib - and some might be in user32.lib.

这篇关于截图C ++ cli的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆