使用ALUT时出现LNK2019错误

时间:2013-03-16 15:35:53

标签: c++ lnk2019

使用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.hfreealut-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;
}

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

1 个答案:

答案 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

  1. 确保关闭Visual Studio。干净。重拍。跑。如果从Debug切换到Release,请记住您需要重做属性页。
  2. 剩下的由你决定。在构建发行版或调试版时,alut.dllalut.lib应出现在相应的Debug或Release文件夹中。

    不要害怕只是尝试在没有Visual Studio的情况下运行已编译的可执行文件(即,只需双击hello_world.exe)