NetUserChangePassword C++; 我想用C++在Windows 7 PC机上更改用户密码。
但当我编译时,它会出错:NetUserChangePassword C++; 我想用C++在Windows 7 PC机上更改用户密码。,c++,winapi,C++,Winapi,但当我编译时,它会出错: undefined reference to 'NetUserChangePassword' [Error] ld returned 1 exit status.` 我怎样才能修好它 是具有NetUserChangePassword功能的MSDN页面: #ifndef UNICODE #define UNICODE #endif #pragma comment(lib, "netapi32.lib") #include <iostream>
undefined reference to 'NetUserChangePassword'
[Error] ld returned 1 exit status.`
我怎样才能修好它
是具有NetUserChangePassword
功能的MSDN页面:
#ifndef UNICODE
#define UNICODE
#endif
#pragma comment(lib, "netapi32.lib")
#include <iostream>
#include <stdio.h>
#include <windows.h>
#include <lm.h>
bool ChangeUserPassword(LPCWSTR OldPassword, LPCWSTR NewPassword)
{
NET_API_STATUS nStatus;
LPTSTR lp = new TCHAR[256];
DWORD dw = 256;
GetUserName(lp, &dw);
nStatus = NetUserChangePassword(NULL, lp, OldPassword, NewPassword);
delete[] lp;
if (nStatus == NERR_Success)
return true;
return false;
}
int main(int argc, char** argv)
{
LPCWSTR Old_P = L"C";
LPCWSTR New_P = L"D";
ChangeUserPassword(Old_P, New_P);
return 0;
}
但我总是收到相同的错误,即您链接到的MSDN主题的“需求”部分声明您必须链接
Netapi32.lib
库。这就是您遗漏的步骤,并解释了遗漏的外部错误
至于如何解决这个问题,很难说清楚。您没有使用MS编译器,因此#pragma
方法无法工作。请查阅编译器/链接器的文档,了解如何链接此库
看起来您正在使用基于GCC的编译器,因此需要将
-lnetapi32
添加到选项中 可能重复的确保SDK安装的Lib文件夹的路径是链接器项目设置的库搜索路径的一部分此行不链接NetApi32.Lib#编译器中没有pragma注释(lib,“netapi32.lib”)。使用-l指定库。我不确定您为什么不被接受。这当然是答案。你不能期望得到任何更具体的指示。您没有告诉我们您使用的编译器。您需要将该库传递给链接器。你的编译器文档上说了什么?你按照我的建议读了吗?我写了,但答案被取消了。对不起
HINSTANCE hInst = LoadLibrary( L"C:\\Windows\\System32\\netapi32.dll ");