来自PowrProf.h的CallNtPowerInformation的新项目有链接器错误

时间:2017-02-01 11:11:50

标签: c++ winapi linker-errors

我刚刚在visual studio 2017 RC中创建了一个新项目(Win32控制台应用程序),并对其进行了编码,据我所知,这应该是有用的。

#include "stdafx.h"
#include <string>
#include <iostream>
#include <windows.h>
#include "PowrProf.h Or Powerbase.h"
using namespace std;
int main(int argc, _TCHAR* argv[])
{
    SYSTEM_POWER_POLICY PowerPlugged;
    SYSTEM_POWER_POLICY PowerUnPlugged;
    POWER_ACTION_POLICY ActionPlugged;
    POWER_ACTION_POLICY ActionUnPlugged;
    CallNtPowerInformation(SystemPowerPolicyAc, NULL, 0, &PowerPlugged, sizeof(SYSTEM_POWER_POLICY));
    CallNtPowerInformation(SystemPowerPolicyDc, NULL, 0, &PowerUnPlugged, sizeof(SYSTEM_POWER_POLICY));
    ActionPlugged.Action = PowerActionNone;
    ActionUnPlugged.Action = PowerActionNone;
    PowerPlugged.LidClose = ActionPlugged;
    PowerUnPlugged.LidClose = ActionUnPlugged;
    CallNtPowerInformation(SystemPowerPolicyAc, &PowerPlugged, sizeof(SYSTEM_POWER_POLICY), NULL, 0);
    CallNtPowerInformation(SystemPowerPolicyDc, &PowerUnPlugged, sizeof(SYSTEM_POWER_POLICY), NULL, 0);

    string yaes;
    getline(cin, yaes);
    return 0;
}

现在我很抱歉,如果这是一个愚蠢的问题,但我真的从来没有处理过Linker,而且代码没有给我任何错误。除了建设当然。

documentation的评论部分对此一无所知。

我在Windows 10上,我尝试过包括Powerbase.h,PowrProf.h。两者都给了我完全相同的错误:

  

LNK2019:未解析的外部符号_CallNtPowerInformation @ 20   在函数中引用   _main BatterySettings c:\ Users \ badmouthing \ documents \ visual studio   2017 \项目\ BatterySettings \ BatterySettings \ BatterySettings.obj

当然

  

LNK1120 1未解决的外部电池设置c:\ users \ profanity(I&#39; m   只是玩得开心,用户名是相同的)\ documents \ visual studio   2017 \项目\ BatterySettings \调试\ BatterySettings.exe

那么我做错了什么? 谢谢。

1 个答案:

答案 0 :(得分:3)

当你包括PowrProf.h时,试试这样做

extern "C" {
#include <Powrprof.h>

}
#pragma comment(lib, "Powrprof.lib")

如果不是这样,你试过干净的重建吗?