我刚刚在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
那么我做错了什么? 谢谢。
答案 0 :(得分:3)
当你包括PowrProf.h时,试试这样做
extern "C" {
#include <Powrprof.h>
}
#pragma comment(lib, "Powrprof.lib")
如果不是这样,你试过干净的重建吗?