本文主要是介绍我们在配置OpenAL的时候到底做了什么,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
一、结论在先
SDK安装 == 仅复制文件到安装指定文件夹下
oalinst.exe == 将 32 位和 64 位的两个 DLL 分别拷贝至对应的系统文件夹
OpenAL32.dllwrap_oal.dll
二、我为什么要这样做 —— 不想反复的安装SDK
最近的项目中需要对之前开发的基于 OpenAL 的音频处理库进行封装,在打包调试的过程中发现了一个问题,就是按照我之前一篇博客配置的流程,中间第二步安装 oalinst.exe,如果这一步不进行,那么编译不会报错,但是并没有声音。如果我不去处理这个问题,会造成以下结果:
在每一台新机器上需要使用我的音频处理模块时都需要安装 SDK。
这个就很不方便,因为我的模块可能会在大程序里,但是还总得想着带着这个安装包,如果以后我不负责这个模块,那么没有人知道为什么模块没错误却没有声音。
三、我是怎么解决的
所以为了解决这个问题,我进行了如下工作,其实也很简单:
首先在安装SDK的情况下:
打开 C:\Windows\System32 和 SysWOW64 文件夹
不安装 oalinst.exe ,测试程序是否好用。 (NO) 记录两个文件夹下的文件数 N1
安装 oalinst.exe ,测试程序是否好用。 (YES) 记录两个文件夹下的文件数 N2
卸载 oalinst.exe ,测试程序是否好用 (NO),如果不好用是否跟1的状态一样。 (YES)
发现 N1 和 N2 的差,初步找到了问题所在。
将两个文件夹中多出的文件拷贝出来(两个DLL),卸载 oalinst.exe,将这两个 DLL 放在我的程序目录
下,在一台完全没有配置 OpenAL 的机器上运行,测试是否好用。(YES)
四、问题解决
找到了问题所在,也就是 SDK 安装这一步仅复制了以下 5 个文件夹到安装目录下。
docs
include
libs
redist
samples
而关键的是 oalinst.exe 这一步,不仅把 OpenAL32.dll 复制到对应的系统目录下,还多复制了一个 wrap_oal.dll 那么把这俩文件拷出来放在我的模块中,以后不安装 OpenAL 的机器也能顺利调用我的模块啦。文章可能写的比较啰嗦,欢迎有问题的同学来交流。
这篇关于我们在配置OpenAL的时候到底做了什么的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!