使用Visual Studio 10,我无法编译openal
http://connect.creativelabs.com/openal/Downloads/Forms/AllItems.aspx
我安装了OpenAL11CoreSDK,执行oalinst.exe
,也下载freealut-1.1.0-bin
我已将“OpenAL 1.1 SDK \ include”中的所有文件复制到“Microsoft Visual Studio 10.0 \ VC \ include \ AL”,alut.h
内freealut-1.1.0-bin
内的文件
我将alut.lib和OpenAL32.lib放在“Microsoft Visual Studio 10.0 \ VC \ libs”中
我将alut.dll和OpenAL32.dll放在“C:\ Windows \ SysWOW64”和“C:\ Windows \ System32”中
我在“项目 - >属性 - > VC ++目录 - >包含目录”和“C / C ++ - >一般 - >附加包含”中包含了“Microsoft Visual Studio 10.0 \ VC \ include \ AL”的路径目录“
“库目录”和“链接器 - >通用 - >附加库目录”中的“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 :(得分:1)
让OpenAL和ALUT工作只需要三个人约5个小时。我确信我的问题与你的不同,但我也确信在你解决了这个问题后,你会遇到另一个问题。与其他海报不同,我不打算用答案解决你的问题 - 我不相信有一个适合所有人的问题。
第1步:安装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
剩下的由你决定。在构建发行版或调试版时,alut.dll
和alut.lib
应出现在相应的Debug或Release文件夹中。
不要害怕只是尝试在没有Visual Studio的情况下运行已编译的可执行文件(即,只需双击hello_world.exe)