错误LNK2019:c ++项目中未解析的外部

时间:2014-01-28 16:55:18

标签: c++ unresolved-external

我写了这两个函数:

void Audio::openSoundDevice()
{
    HWAVEOUT hWaveOut ;
    WAVEFORMATEX wfx ;
    MMRESULT result ;
    LPSTR block ;
    DWORD blockSize ;

    wfx.nSamplesPerSec = 44100 ;
    wfx.wBitsPerSample = 16 ;
    wfx.nChannels = 2 ;
    wfx.cbSize= 0 ;
    wfx.wFormatTag = WAVE_FORMAT_PCM ;
    wfx.nBlockAlign = (wfx.wBitsPerSample >> 3) * wfx.nChannels ;
    wfx.nAvgBytesPerSec = wfx.nBlockAlign * wfx.nSamplesPerSec ; 

    if(waveOutOpen( &hWaveOut, WAVE_MAPPER, &wfx, 0, 0, CALLBACK_NULL ) !=MMSYSERR_NOERROR) 
    { 
        fprintf(stderr, "unable to open WAVE_MAPPER device\n") ;
        ExitProcess(1) ;
    } 

    printf("The Wave Mapper device was opened successfully!\n") ; 
    waveOutClose(hWaveOut) ;
    //Below Line ruins Everything:(
    if((block = loadAudioBlock("C:\\Windows\\Media\\ding.wav", &blockSize)) == NULL) 
    {
        fprintf(stderr, "Unable to load file\n");
        ExitProcess(1) ;
    }
    writeAudioBlock(hWaveOut, block, blockSize) ;
    waveOutClose(hWaveOut) ;

}

LPSTR loadAudioBlock(const char* filename, DWORD* blockSize) 
{
    HANDLE hFile = INVALID_HANDLE_VALUE ;
    DWORD size = 0 ;
    DWORD readBytes = 0 ;
    void* block = NULL ;

    /* * open the file */ 
    if((hFile = CreateFileA(filename, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, 0, NULL )) == INVALID_HANDLE_VALUE) { return NULL ; }
    /* * get it's size, allocate memory and read the file * into memory. don't use this on large files! */ 
    do { 
        if((size = GetFileSize(hFile, NULL)) == 0) { break ; }
        if((block = HeapAlloc(GetProcessHeap(), 0, size)) == NULL) { break ; }
        ReadFile(hFile, block, size, &readBytes, NULL) ; 
    }
    while(0) ; 
    CloseHandle(hFile) ;
    *blockSize = size ;
    return (LPSTR)block ;
}

正如你看到“openSoundDevice”调用“loadAudioBlock”但当它发生时“弹出LNK2019:未解析的外部”弹出。我将Const char *更改为LPCWSTR,将Unicode更改为多字节,其他一切都没有发生。什么是这个代码的问题?

由于

0 个答案:

没有答案