VS2013 LNK2019的问题

代码是#include
#include "stdio.h"
#include "stdlib.h"
//#include "“winbase.h”"

#define BUFSIZE 1024

BOOL GetDiverInfo(LPSTR szDrive);

int main(int argc, CHAR* argv[])
{

CHAR szLogicaldriveStrings[BUFSIZE];
PCHAR szDrive;
ZeroMemory(szLogicaldriveStrings, BUFSIZE);
GetLogicalDriveStrings(BUFSIZE - 1, szLogicaldriveStrings);
szDrive = (PCHAR)szLogicaldriveStrings;
do
{
    if (!GetDiverInfo(szDrive))
    {
        printf("\nGet Volume Information Error : %d ", GetLastError());

    }
    szDrive += (lstrlen(szDrive) + 1);
} while (*szDrive != '\x00');

return 0;

}

BOOL GetDriverInfo(LPSTR szDrive)
{
UINT uDriverType;
DWORD dwVolumeSerialNumber;
DWORD dwMaximumComponentlength;
DWORD dwFileSystemFlags;
CHAR szFileSystemNameBuffer[BUFSIZE];
CHAR szDriveName[MAX_PATH];

printf("\n%s\n", szDrive);
uDriverType = GetDriveType(szDrive);

switch (uDriverType)
{
case DRIVE_UNKNOWN:
    printf("The driver type cannot be determined!");
    break;
case DRIVE_NO_ROOT_DIR:
    printf("The root path is invalid,for example,no volume is mounted at the path");
    break;
case DRIVE_REMOVABLE:
    printf("The drive is a type that has removable media,for example:a floppy drive or removable hard disk");
    break;
case DRIVE_FIXED:
    printf("The drive is a type that cannot be removed, for example,a fixed hard drive");
    break;
case DRIVE_REMOTE:
    printf("This drive is a remote(network) drive");
    break;
case DRIVE_CDROM:
    printf("This drive is a CD-ROM drive.");
    break;
case DRIVE_RAMDISK:
    printf("This drive is a RAM disk");
    break;
default:
    break;
}

if (!(GetVolumeInformation(
    szDrive,
    szDriveName,
    MAX_PATH,
    &dwVolumeSerialNumber,
    &dwMaximumComponentlength,
    &dwFileSystemFlags,
    szFileSystemNameBuffer,
    BUFSIZE)))
{
    return FALSE;

}

if (0 != lstrlen(szDriveName))
{
    printf("\nDrive Name is %s.\n", szDriveName);
}

printf("\nVolume Serial is %u.", dwVolumeSerialNumber);
printf("\nMaximum Component Length is %u.", dwMaximumComponentlength);
printf("\nSystem Type is %s.\n", szFileSystemNameBuffer);

if (dwFileSystemFlags & FILE_VOLUME_QUOTAS)
{

    printf("The file system supports disk Quotas.\n");
}

if (dwFileSystemFlags & FILE_SUPPORTS_REPARSE_POINTS)
{
    printf("The file system does not support volume mount points.\n");

}

if (dwFileSystemFlags & FILE_CASE_SENSITIVE_SEARCH)
{
    printf("The file system supports case-sentitive file name.\n");
}

printf("...\n");

return TRUE;

}

错误是错误 1 error LNK2019: 无法解析的外部符号 "int __cdecl GetDiverInfo(char *)" (?GetDiverInfo@@YAHPAD@Z),该符号在函数 _main 中被引用 D:\资料\代码\mfc测试\遍历卷并获取其属性\遍历卷并获取其属性\源.obj 遍历卷并获取其属性

GetDiverInfo这个函数不是api函数,问你,你是在哪里定义的,或者从哪里抄来的代码。

这个api 方法不是使用C++的调用方式吧,或者当前你的解决方案里面,是C调用方式或者其他的调用方式,检查下,或者更换DLL

这是《精通windows API》上的一个例子,主要原因可能是微软已经定义了GetDirverInfo()这个函数,你自己再写的话要换一个名字,可以给它前面加一个下划线。