错误LNK2019无法解析的外部符号_IsAdminUser在函数“ void __cdecl RegisterUps(void)”中引用(?RegisterUps @@ YAXXZ)

时间:2018-10-17 10:35:06

标签: c++ visual-c++

在编译我的“ mainserv”项目时,出现以下错误。在“ Debug”构建中,我没有收到任何错误,但是在“ Release”构建中,我看到了此错误:

错误LNK2019无法解析的外部符号_IsAdminUser在函数“ void __cdecl RegisterUps(void)”(?RegisterUps @@ YAXXZ)中引用mainserv E:\ Code \ PCPE \ mainserv E:\ Code \ PCPE \ PCPE \ mainserv \ wrkthred.obj 1构建

我在“ mainserv”项目中看到的设置:

配置属性->常规->使用MFC“在静态库中使用MFC” 链接器->系统->子系统“ Windows(/ SUBSYSTEM:WINDOWS)

在mainserv项目的wrkthred.cxx文件中,定义了RegisterUps(),在此函数中,我们如下图所示调用IsAdminUser():

void RegisterUps()
{

        if(IsAdminUser())
        {
            RegistryObj regSettings(APC_DALI_SETTINGS_REG_PATH);

            HKEY hKey = NULL;   
            TCHAR szInstalledPath[MAXSIZE];
            DWORD dwBufLen = MAXSIZE;
            LONG lRet = -1;                         

            DWORD dwDataCollectionEnabled = 0;
            if((regSettings.Get(APC_SETTINGS_ADC_ENABLE,dwDataCollectionEnabled)))
            {
                if(TRUE == dwDataCollectionEnabled )
                {                                                               

                    lRet = RegOpenKeyEx( HKEY_LOCAL_MACHINE,APC_DALI_DEFAULT_REG_PATH, 0, KEY_ALL_ACCESS, &hKey );
                    if(lRet == 0)
                    {       
                        lRet = RegQueryValueEx( hKey ,APC_INSTALL_PATH, NULL, NULL,(LPBYTE)(szInstalledPath), &dwBufLen);
                    }           
                    if(lRet == 0)
                    {                                                               
                        ShellExecute(NULL,_T("open"),APC_APCUPDATES_EXE,_T("-r"),szInstalledPath,SW_HIDE);
                    }                                   
                    if(hKey != NULL)
                    {
                        RegCloseKey(hKey);  
                    }
                }                                                                                                                                       
            }   
        }
}

In wrkthred.h file RegisterUps() is declared like as shown below:

void RegisterUps(); 


In drvutil.h file, IsAdminUser() function is declared.

extern "C" { //no name mangling 

LONG IsAdminUser(void);
}

在drvutil.h文件中,IsAdminUser()函数的定义如下所示:

LONG IsAdminUser(void)
{
    BOOL bRet = TRUE;

    if (!IsUserAdmin())
    {
        bRet = FALSE;
    }
    return(bRet);
}

请帮助我解决此错误:

0 个答案:

没有答案
相关问题