MoveWindow库

时间:2018-10-02 22:26:40

标签: c++ winapi

    //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。

1 个答案:

答案 0 :(得分:3)

头文件和DLL导入库是两个独立的东西。头文件仅由编译器使用。库文件仅由链接器使用。 MOST头文件不会触发要链接的特定lib文件(尽管可以使用#pragma comment(lib, filename)语句来完成)。正如您所发现的,项目的责任是指定需要链接到的适当的lib文件。仅仅因为您的#include windows.h头文件不能保证user32.lib和其他Win32 API库是自动链接的。但是,默认情况下,大多数预定义Windows项目模板附带的编译器都将链接到常见的Win32 API库文件。显然您的项目没有。