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 ");