一、结论在先


  1. SDK安装 == 仅复制文件到安装指定文件夹下

  2. oalinst.exe == 将 32 位和 64 位的两个 DLL 分别拷贝至对应的系统文件夹

    OpenAL32.dllwrap_oal.dll

二、我为什么要这样做 —— 不想反复的安装SDK


最近的项目中需要对之前开发的基于 OpenAL 的音频处理库进行封装,在打包调试的过程中发现了一个问题,就是按照我之前一篇博客配置的流程,中间第二步安装 oalinst.exe,如果这一步不进行,那么编译不会报错,但是并没有声音。如果我不去处理这个问题,会造成以下结果:

在每一台新机器上需要使用我的音频处理模块时都需要安装 SDK。

这个就很不方便,因为我的模块可能会在大程序里,但是还总得想着带着这个安装包,如果以后我不负责这个模块,那么没有人知道为什么模块没错误却没有声音。


三、我是怎么解决的


所以为了解决这个问题,我进行了如下工作,其实也很简单:

首先在安装SDK的情况下:
打开 C:\Windows\System32 和 SysWOW64 文件夹

  1. 不安装 oalinst.exe ,测试程序是否好用。 (NO) 记录两个文件夹下的文件数 N1

  2. 安装 oalinst.exe ,测试程序是否好用。 (YES) 记录两个文件夹下的文件数 N2

  3. 卸载 oalinst.exe ,测试程序是否好用 (NO),如果不好用是否跟1的状态一样。 (YES)

  4. 发现 N1 和 N2 的差,初步找到了问题所在。

  5. 将两个文件夹中多出的文件拷贝出来(两个DLL),卸载 oalinst.exe,将这两个 DLL 放在我的程序目录
    下,在一台完全没有配置 OpenAL 的机器上运行,测试是否好用。(YES)


四、问题解决

找到了问题所在,也就是 SDK 安装这一步仅复制了以下 5 个文件夹到安装目录下。

docs
include
libs
redist
samples

而关键的是 oalinst.exe 这一步,不仅把 OpenAL32.dll 复制到对应的系统目录下,还多复制了一个 wrap_oal.dll 那么把这俩文件拷出来放在我的模块中,以后不安装 OpenAL 的机器也能顺利调用我的模块啦。文章可能写的比较啰嗦,欢迎有问题的同学来交流。

我们在配置OpenAL的时候到底做了什么相关推荐

  1. volatile关键字到底做了什么?

    话不多说,直接贴代码 class Singleton {private static volatile Singleton instance;private Singleton(){}//双重判空pu ...

  2. iis服务器怎样配置多张证书,IIS配置多个ssl怎么做?怎么配置?

    给服务器添加配置SSL证书是很有必要的,这个也是当下众多网站的一个选择,给网站安装配置了SSL证书之后,网站的安全性也被提升了,这样网站的地址也是值得大家去信赖的,不过不同的网站他们在配置SSL证书的 ...

  3. 忠于职守 —— sysmon 线程到底做了什么?(九)

    在 runtime.main() 函数中,执行 runtime_init() 前,会启动一个 sysmon 的监控线程,执行后台监控任务: systemstack(func() { // 创建监控线程 ...

  4. http.ListenAndServe()到底做了什么?

    参考:https://studygolang.com/articles/25849?fr=sidebar ​ http://blog.csdn.net/gophers 实现一个最简短的hello wo ...

  5. ad中电容用什么封装_二极管在电路中到底做什么用的

    所有的电子电路中基本上都会用到二极管,它的特性也是非常之多,最主要就是单方向导电性,(单向导电性的两根引脚之间的电阻分为正向电阻和反向电阻两种).人们利用这些不同特性构成各种具体的应用电路,分析不同电 ...

  6. MySQL实战 | 01 当执行一条 select 语句时,MySQL 到底做了啥?

    原文链接:当执行一条 select 语句时,MySQL 到底做了啥? 也许,你也跟我一样,在遇到数据库问题时,总时茫然失措,想重启解决问题,又怕导致数据丢失,更怕重启失败,影响业务. 就算重启成功了, ...

  7. python中mod是什么意思_【python中,mod_python到底做了些什么呢?】mod python 教程

    python 编程小白 ,不会用doctest 请大神指教怎么用!! >>> >>> def is_between(v, lower, higher): ...   ...

  8. 又被黑!百度到底做错了什么?

    前几天中国互联网巨头的市值又"更新"了一下,没想到百度现在"沦落"成了其它互联网公司市值的衡量单位. 图片来源自腾讯新闻 这一次,怕百度被"黑&quo ...

  9. 软件在安装时,到底做了些什么?

    软件在安装时,到底做了些什么? 大家每天都在用电脑,可能也经常在自己的电脑上安装软件.就算自己没安装过,至少也看到人家安装过软件.在这里,我不是想教你怎么安装软件,而是想向你展示,软件在安装的过程中, ...

最新文章

  1. 复杂JSON参数传递后台处理方式
  2. RDC Lent ifm IP Analysis Exercise
  3. C语言僵尸进程,C/C++网络编程8——多进程服务器端之销毁僵尸进程
  4. Mac/Win 下浏览器网页长截屏(不安装截图软件实现)
  5. c语言面向对象:队列 (先进先出,后进先出)
  6. 扫地机器人市场:米家、科沃斯激烈肉搏
  7. Delphi使用THTTPClient实现异步下载
  8. 使用微信企业机器人发送信息
  9. 界面原型设计工具开源软件
  10. mac卸载python3.7_工具安装-Mac 卸载python3
  11. linux上设置别名alias(快速便捷打开文件)
  12. Android 读取CPU/GPU运行参数(MTK平台)
  13. 【题目】动态规划:小朋友过桥问题
  14. 南瓜派php,南瓜派 巧克力塔
  15. 华为--配置静态路由实现PC1与PC2通信
  16. 计算机网络八校联考,八校联考排名出炉!前十名华师一独占八席,在武汉上华师一有多难?...
  17. 前端和后端的英文_80后老阿姨转行做前端的学习心得,深情交流!
  18. SecuritySpy for Mac(Mac视频监控软件)
  19. 计算机毕业设计JAVA售后管理系统mybatis+源码+调试部署+系统+数据库+lw
  20. 电商平台API接口,店铺所有商品

热门文章

  1. 7.26第二课课堂笔记
  2. Flex加载swf的几个要点
  3. excel 批量替换换行符
  4. Qt Creator实现简易画板代码解析【工具栏】【画板】
  5. linux开机启动过程(简述)
  6. java微服务的理解
  7. 数理统计-方差标准差协方差相关系数
  8. select函数的作用
  9. 英国《金融时报》:3G迟来的商机
  10. 假期旅游防坑必修手册