在编译我的“ 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);
}
请帮助我解决此错误: