0

使用 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”
中,我已经包含了“Microsoft Visual Studio 10.0\ “项目->属性->VC++目录->包含目录”和“C/C++->常规->附加包含目录”中的“VC\include\AL”
“库目录”和“链接器->中的“VC\lib” General->Additional Library Directories” “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;
}

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

4

1 回答 1

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 的 hello world 很好。

第 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.dll应该alut.lib会出现在相应的 Debug 或 Release 文件夹中。

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

于 2015-08-04T05:06:21.337 回答