//example code
#include<iostream>
#include<Windows.h>
Int main()
{
BOOL MoveWindow(
HWND hWnd,
int X,
int Y,
int nWidth,
int nHeight,
BOOL bRepaint
);
return 0;
}
最近我在某些代码中使用了类似的功能,但出现链接器错误。我的印象是MoveWindow包含在Windows.h中,但是它不会链接。
在查找MoveWindow之后,我决定将'User32.lib'添加到其他依赖项中。这解决了问题,但是为什么我不知道? user32不在windows.h中吗,因为这就是所需的include吗?是什么导致我的依赖缺失。我正在运行最新版本的VS17。
答案 0 :(得分:3)
头文件和DLL导入库是两个独立的东西。头文件仅由编译器使用。库文件仅由链接器使用。 MOST头文件不会触发要链接的特定lib文件(尽管可以使用#pragma comment(lib, filename)
语句来完成)。正如您所发现的,项目的责任是指定需要链接到的适当的lib文件。仅仅因为您的#include
windows.h
头文件不能保证user32.lib
和其他Win32 API库是自动链接的。但是,默认情况下,大多数预定义Windows项目模板附带的编译器都将链接到常见的Win32 API库文件。显然您的项目没有。