Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/151.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 错误LNK2019:c+中的未解析外部+;计划_C++_Unresolved External - Fatal编程技术网

C++ 错误LNK2019:c+中的未解析外部+;计划

C++ 错误LNK2019:c+中的未解析外部+;计划,c++,unresolved-external,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.cbSi

我写了两个函数:

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

}

正如您所看到的,“openSoundDevice”调用“loadAudioBlock”,但当它发生时,会弹出“错误LNK2019:未解析的外部”。我将Const char*更改为LPCWSTR,将Unicode更改为多字节,其他所有操作都会发生,但什么都不会发生。这段代码有什么问题吗


感谢是否
loadAudioBlock
可能是
Audio
的成员?确切的错误字符串是什么?错误LNK2019:未解析的外部符号“public:char*u thiscall Audio::loadAudioBlock(char const*,unsigned long*)”(?loadAudioBlock@Audio@@QAEPADPBDPAK@Z)在函数中引用“public:void\uu thiscall Audio::openSoundDevice(void)”(?openSoundDevice@Audio@@QAEXXZ)可能的副本不是音频的成员。谢谢Nabla
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 ;
}