为什么使用 GetPixel 会导致"undefined reference"?
Why does using GetPixel result in an "undefined reference"?
#include <iostream>
#include <windows.h>
#include <string>
#include <ctime>
#include<stdio.h>
using namespace std;
int main()
{
HDC dc = GetDC(NULL);
COLORREF color = GetPixel(dc, 10, 10);
ReleaseDC(NULL, dc);
cout << color;
return 0;
}
错误提示:
[Linker error] undefined reference to `GetPixel@12'
ld returned 1 exit status
[Build Error] [Project1.exe] Error 1
您需要将Gdi32.lib
添加到依赖项列表中。GetPixel()
函数不在默认库中。
在Visual Studio中,你可以像这样添加依赖项:
菜单:项目->属性->配置属性->链接器->输入
"附加依赖项"选项看起来像这样:
kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)
添加Gdi32.lib
我得到了这个错误,我通过取消Visual Studio Code作为我的IDE并切换到Visual Studio 2019来解决这个问题。VS19自动解决了我的依赖错误!我希望这能帮助到一些人!
为了使用Win32 API,你需要创建一个Windows应用程序。
这意味着使用WinMain函数而不是main()函数。
它还可以(可选)包括创建窗口并使用窗口过程处理窗口消息。
在你这样做之后,你将能够调用Win32 API GetPixel。
如果你坚持创建一个控制台或非windows应用程序,那么你将不得不定义你自己的GetPixel,它可能会直接访问显存。
所以,首先创建一个WinMain函数而不是main()。(当然,您还需要链接到相应的库。)
相关文章:
- 我的项目不会像"undefined reference to `grpc::g_core_codegen_interface'"那样使用未定义的引用错误进行编译
- Visual Studio Code "undefined reference to `WinMain@16'"
- 使用 MATLAB 编码器生成C++代码:编译错误"undefined reference to `rgb2gray_tbb_real64'"
- 为什么创建友元类的实例会导致"undefined reference to"错误?
- Tensorflow c++ api undefined reference to 'tflite::D efaultErrorReporter()'
- 为什么在使用 SDL2 时仍然收到'undefined reference'链接器错误?
- OpenCV undefined reference to 'cv::imread(cv::String const&, int)'
- Libcurl c++ "undefined reference to" (Windows/MinGW/g++)
- 尝试使用 extern "C" 调用 C 中的C++方法,得到"undefined reference to"对象的链接器错误
- build error : undefined reference to `yyFlexLexer::yyFlexLex
- 安卓 NDK 制造。数百"undefined reference error"
- 当我尝试进行TPC-E测试时,实用程序抱怨"undefined reference"
- 声明和定义函数静态会产生"undefined reference to function_name()"
- C++ : "undefined reference to"可能是因为CMake文件
- 包含<iostream>时"Undefined reference"错误
- CMake 'undefined reference' CERN-ROOT 的错误
- 生成错误:"cannot find target for file"和"undefined reference"
- AppData\Local\Temp\cc59LXDc.o:test1.cpp: undefined reference to 'constructNewObjectOfClass
- YAML-cpp 编译错误:"undefined reference to YAML::LoadFile"
- 添加 cpp11 插件时出现错误消息"Undefined reference to boost (...)"