2013-03-16 47 views
0

使用Visual Studio 10,我未能通过openal错误LNK2019同时使用ALUT

http://connect.creativelabs.com/openal/Downloads/Forms/AllItems.aspx

我已经安装了OpenAL11CoreSDK编译提供的示例代码,执行oalinst.exe,还下载freealut-1.1.0-bin
我已经我将alut.lib和OpenAL32.lib放在“Microsoft Visual Studio 10.0 \ VC \ include \库“ 我把alut.dll和OpenAL32.dll放在“C:\ Windows \ SysWOW64”和“C:\ Windows \ System32”中
我已将“Microsoft Visual Studio 10.0 \ VC \ include \ AL”项目 - >属性 - > VC++目录 - >包含目录“和”C/C++ - >常规 - >其他包含目录“
”库目录“和”链接器 - >常规 - >其他库目录中的“VC \ lib” “ 的路径‘alut.lib’和‘OpenAL.lib’中的‘连接器 - >输入 - >附加依赖’

我想我已经联系所有的图书馆,但我仍然得到链接错误:

1>test.obj : error LNK2019: unresolved external symbol __imp__alSourcePlay referenced in function _main 
1>test.obj : error LNK2019: unresolved external symbol __imp__alSourcei referenced in function _main 
1>test.obj : error LNK2019: unresolved external symbol __imp__alGenSources referenced in function _main<br> 
1>C:\Users\SONY\Documents\Visual Studio 2010\Projects\test\Debug\test.exe : fatal error LNK1120: 3 unresolved externals 


#include <stdlib.h> 
#include <AL/alut.h> 

/* 
    This is the 'Hello World' program from the ALUT 
    reference manual. 

    Link using '-lalut -lopenal -lpthread'. 
*/ 

int 
main (int argc, char **argv) 
{ 
    ALuint helloBuffer, helloSource; 
    alutInit (&argc, argv); 
    helloBuffer = alutCreateBufferHelloWorld(); 
    alGenSources (1, &helloSource); 
    alSourcei (helloSource, AL_BUFFER, helloBuffer); 
    alSourcePlay (helloSource); 
    alutSleep (1); 
    alutExit(); 
    return EXIT_SUCCESS; 
} 

我迷路了,我究竟做错了什么?

+0

你说你的链接器输入使用OpenAL.lib运行编译可执行文件,但lib文件是alut.lib – thisisdog 2013-03-16 19:40:21

+0

即使“OpenAL.lib”的路径已从链接器输入中删除,它也不起作用。 – millie 2013-03-17 04:32:39

回答

0

让OpenAL和ALUT工作只需要三个人约5个小时。我相信我的问题与你的问题不同,但我也确信,在你解决问题后,你会碰到另一个问题。与其他海报不同,我不会用一个答案来解决你的问题 - 我不认为有一个适用于每个人的单一问题。第一步:安装oalinst.exe。这是OpenAL的安装程序。没有使用安装程序,我们无法让OpenAL工作。这部分特别棘手,因为有多个版本以相同的文件名运行。你想要的是最新版本。在撰写本文时,我正在使用的是June 02, 2009。您可以通过右键单击文件并转至Properties->Digital Signature来查找这些日期。

在我们的例子中,oalinst在System32和SysWow64中安装OpenAL32.dll; OpenAL CoreSDK内部还有一个OpenAL32.dll - 所有这些都是不同的

第2步:确保您的程序尽可能地被弄糊涂。来自OpenAL的你好世界很好。

第3步:确保你有FreeALUT。

第4步:在Visual Studio中检查您的依赖关系。右键单击Visual Studio中的项目(即解决方案资源管理器树中的解决方案正下方的项目),然后转至

Properties > Configuration Properties > C/C++ > General > Additional Include Directories (more)

STUFF\OpenAL\OpenAL 1.1\include 
STUFF\OpenAL\freealut-1.1.0-bin\include 
STUFF\OpenAL\OpenAL 1.1\include\AL 

确保STUFF与您拥有的目录结构匹配。稍后保存一些挫败感,并检查您键入的路径是否可以复制粘贴到Windows资源管理器中,并将您置于正确的位置。

现在, Properties > Configuration Properties > Linker > General > Additional Library Directories (more)

STUFF\OpenAL\OpenAL 1.1\libs\Win32 
STUFF\OpenAL\freealut-1.1.0-bin\lib 

与上次相同。

最后, Properties > Configuration Properties > Linker > Input > Additional Dependencies

OpenAL32.lib 
alut.lib 

  1. 确保关闭Visual Studio。做清洁。重拍。跑。如果您从Debug切换到Release,请记住您需要重做属性页面。

其余的由你决定。当您构建发行版或调试版本时,alut.dllalut.lib应显示在相应的调试或发布文件夹中。

不要害怕,只是尽量不Visual Studio的(即,只是在hello_world.exe双击)