openal配置(更新)
一,安装openal核心库:
1,去openal官网下载OpenAL11CoreSDK。解压后是一个exe文件,安装后去安装目录D:/Program Files/OpenAL 1.1 SDK(你也可能安装在其它目录)看,会发现有如下几个文件夹:
docs
include
libs
redist
samples
其中docs中是官方文档,学习openal的主要资料。
2,开始安装:
运行OpenAL 1.1/SDKredist/oalinst.exe,提示安装成功。(我只知道这一步包含将openal32.dll拷贝到C:/windows/system32的动作,但确实还有其它一些作用,我不知道,反正安装就行了)。
然后将include文件夹中所有头文件拷贝到vc6.0的Include/AL/下(vc6.0的include中本身没有AL这个文件夹,需要自己建立)。
将libs/Win32中的OpenAL32.lib拷贝到vc6.0的LIB文件夹下。
核心库安完了。
二,安装alut:
1,去openal官网下载freealut-1.1.0-bin,其中有下面几个文件夹:
doc
examples
include
lib
2,开始安装:
include文件夹中只有一个头文件alut.h。
lib文件夹中有alut.dll和alut.lib两个文件。
(1)将alut.h拷贝到vc6.0的Include/AL下。
(2)将alut.lib拷贝到vc6.0的LIB文件夹下。
(3)alut.dll则随程序附带(即放在你的工程目录下)。
alut安完。
三,编译器设置:
不要忘了将OpenAL32.lib和alut.lib添加到vc6.0的 工程->设置->连接 中的 "对象/库模块" 中去。
四,最后一点小麻烦:
做完了上面这些事情,我找了一个最简单的openal程序进行测试,结果发生编译错误说某些alut函数未定义。但我打开alut.h看到其中确实有这些函数的定义,看来看去,发现alut.h中有这样一段代码:
#if defined(_MSC_VER)
#include <alc.h>
#include <al.h>
#elif defined(__APPLE__)
#include <OpenAL/alc.h>
#include <OpenAL/al.h>
#else
#include <AL/al.h>
#include <AL/alc.h>
#endif
#include <alc.h>
#include <al.h>
#elif defined(__APPLE__)
#include <OpenAL/alc.h>
#include <OpenAL/al.h>
#else
#include <AL/al.h>
#include <AL/alc.h>
#endif
对宏指令不大懂,但是能猜到上面这段的意思是:
如果是微软平台,则
#include <alc.h>
#include <al.h>
如果是苹果平台,则
#include <al.h>
如果是苹果平台,则
#include <OpenAL/alc.h>
#include <OpenAL/al.h>
如果是其它平台,则
#include <OpenAL/al.h>
如果是其它平台,则
#include <AL/al.h>
#include <AL/alc.h>
显然,我现在使用的是微软平台,因此编译将进入
#include <AL/alc.h>
显然,我现在使用的是微软平台,因此编译将进入
#include <alc.h>
#include <al.h>
这个分支,但是前面我们已经建立了AL文件夹,将al.h和alc.h都放入了其中。所以应该将它也改成
#include <al.h>
这个分支,但是前面我们已经建立了AL文件夹,将al.h和alc.h都放入了其中。所以应该将它也改成
#include <AL/al.h>
#include <AL/alc.h>
就对了。
#include <AL/alc.h>
就对了。
即将上面代码改为:
#if defined(_MSC_VER)
#include <AL/alc.h>
#include <AL/al.h>
#elif defined(__APPLE__)
#include <OpenAL/alc.h>
#include <OpenAL/al.h>
#else
#include <AL/al.h>
#include <AL/alc.h>
#endif
#include <AL/alc.h>
#include <AL/al.h>
#elif defined(__APPLE__)
#include <OpenAL/alc.h>
#include <OpenAL/al.h>
#else
#include <AL/al.h>
#include <AL/alc.h>
#endif
然后编译运行程序,哈哈,听到呻吟了!