为啥这样的 penAL 代码在 Visual Studio 2008 中会出现这样的错误?

Posted

技术标签:

【中文标题】为啥这样的 penAL 代码在 Visual Studio 2008 中会出现这样的错误?【英文标题】:Why such OpenAL code gives such Erros in Visual studio 2008?为什么这样的 penAL 代码在 Visual Studio 2008 中会出现这样的错误? 【发布时间】:2010-11-03 15:06:27 【问题描述】:

所以总的来说,我的代码非常简单——我正在尝试编写麦克风回声程序,这就是它的开始(在我看来——我对 OpenAL 很警惕)

#include "stdafx.h"
#include <iostream> 
#include <windows.h> 
#include <stdlib.h>
#include <conio.h>
#include <math.h>
#include <stdio.h>  

#include <al.h>
#include <alc.h>
#include <alut.h>


using namespace std;

int _tmain(int argc, _TCHAR* argv[])

    cin.get();
    return 0;

void BlockingCapture(ALCdevice *mCaptureDevice, ALCubyte *pBuffer, 
                     ALCint iSamplesToGet) 
 
    ALCint capturedSamples = 0; 
    while(capturedSamples < iSamplesToGet) 
     
        ALCint avail; 
        alcGetIntegerv(mCaptureDevice, ALC_CAPTURE_SAMPLES, 1, &avail); 
        if(avail > 0/*or some threshold*/) 
         
            avail = min(avail, iSamplesToGet-capturedSamples); 
            alcCaptureSamples(mCaptureDevice, pBuffer, avail); 
            capturedSamples += avail; 
            pBuffer += avail; 
         
        else 
            Sleep(0); 
     
 

当我尝试编译它时,它给了我 3 个错误

1) Error 1 error LNK2019: ссылка на неразрешенный внешний символ __imp__alcCaptureSamples в функции "void __cdecl BlockingCapture(struct ALCdevice_struct *,unsigned char *,int)" (?BlockingCapture@@YAXPAUALCdevice_struct@@PAEH@Z) HelloOpenALMic.obj HelloOpenALMic

2)Error 2 error LNK2019: ссылка на неразрешенный внешний символ __imp__alcGetIntegerv в функции "void __cdecl BlockingCapture(struct ALCdevice_struct *,unsigned char *,int)" (?BlockingCapture@@YAXPAUALCdevice_struct@@PAEH@Z) HelloOpenALMic.obj HelloOpenALMic

3)Error 3 fatal error LNK1120: 2 неразрешенных внешних элементов C:\Users\Avesta\Documents\Visual Studio 2008\Projects\OJ\OJ\V3\Debug\HelloOpenALMic.exe HelloOpenALMic

顺便说一句:(我已将此post 作为我的代码的起点。)

如何摆脱它们?

【问题讨论】:

【参考方案1】:

您需要将 OpenAL 库链接到您的应用程序。

进入项目属性->链接器->输入并将openal32.lib添加到列表中。

【讨论】:

以上是关于为啥这样的 penAL 代码在 Visual Studio 2008 中会出现这样的错误?的主要内容,如果未能解决你的问题,请参考以下文章

为啥 Visual Studio 认为我需要构建项目?

为啥此代码会使 Visual Studio 2015 崩溃?

为啥这段代码不能在 Visual Studio 2010 中编译和运行?

为啥 Visual Studio 2010 使用源代码发布网站?

为啥 Visual Studio 在调试时会以不同的方式处理 ANSI Escape 代码?

为啥 Visual Studio 2008 在 C++ 代码中突出显示 internal 作为关键字?