1,下载 VS2019 社区版(community),这是微软提供的开源免费版本,针对个人用户。离线安装参考微软的说明。

2,下载 openal-soft-1.20.1.tar.bz2 : https://www.openal-soft.org/openal-releases/openal-soft-1.20.1.tar.bz2

3,下载 freealut-last-upstream-commit.zip : https://github.com/vancegroup/freealut/archive/last-upstream-commit.zip

4,下载cmake : cmake-3.18.0-win64-x64.msi : https://github.com/Kitware/CMake/releases/download/v3.18.0/cmake-3.18.0-win64-x64.msi

安装:

1,安装cmake

2,安装VS2019

3,解压 openal-soft ,进入源码目录,建立 build 目录(如果没有),进入 build 目录,执行 cmake .. ,生成vs2019工程文件 OpenAl.sln,用vs2019打开工程文件,编译64位目标文件。

4,解压 freealut ,进入源码目录,建立 build 目录(如果没有),进入 build 目录,执行 cmake .. ,生成vs2019工程文件 Alut.sln,用vs2019打开工程文件,编译64位目标文件。需要指定 openal-soft 的 include 及 include\AL 目录。如果cmake时总是头文件找不到,需要修改一下CMakeLists.txt,添加OPENAL_INCLUDE_DIR变量目录,注释掉出错的提示行IF(NOT AL_HEADERS)

测试代码:

建立新工程,终端控制台工程,使用下列源码:

// ==============================================================

#include <al.h>   
#include <alc.h>   
#include <alut.h>   
      
#include <iostream>   
#include <stdlib.h>   
#include <stdio.h>   
 
// 存储声音数据.
ALuint Buffer;
 
// 用于播放声音.
ALuint Source;
 
// 源声音的位置.
ALfloat SourcePos[] = { 0.0, 0.0, 0.0 };
 
// 源声音的速度.
ALfloat SourceVel[] = { 0.0, 0.0, 0.1 };
 
// 听者的位置.
ALfloat ListenerPos[] = { 0.0, 0.0, 0.0 };
 
// 听者的速度
ALfloat ListenerVel[] = { 0.0, 0.0, 0.0 };
 
// 听者的方向 (first 3 elements are "at", second 3 are "up")
ALfloat ListenerOri[] = { 0.0, 0.0, -1.0, 0.0, 1.0, 0.0 };
//这一章与上一章唯一的不同是源速度的改变,他的‘Z’现在是0.1.
 
ALboolean LoadALData()
{
    // 载入变量
    ALenum format;
    ALsizei size;
    ALvoid* data;
    ALsizei freq;
    ALboolean loop;
 
    // 载入WAV数据.
 
    alGenBuffers(1, &Buffer);
 
    if (alGetError() != AL_NO_ERROR)
        return AL_FALSE;
 
    alutLoadWAVFile((ALbyte *)"1.wav", &format, &data, &size, &freq, &loop);
    alBufferData(Buffer, format, data, size, freq);
    alutUnloadWAV(format, data, size, freq);
 
    // 捆绑源
 
    alGenSources(1, &Source);
 
    if (alGetError() != AL_NO_ERROR)
        return AL_FALSE;
 
    alSourcei (Source, AL_BUFFER, Buffer );
    alSourcef (Source, AL_PITCH, 1.0f );
    alSourcef (Source, AL_GAIN, 1.0f );
    alSourcefv(Source, AL_POSITION, SourcePos);
    alSourcefv(Source, AL_VELOCITY, SourceVel);
    alSourcei (Source, AL_LOOPING, AL_TRUE );
 
    // 做错误检测并返回
 
    if (alGetError() != AL_NO_ERROR)
        return AL_FALSE;
 
    return AL_TRUE;
}
 
//在这一节中有两处改变,首先是导入“FOOTSTES。WAV”,设置源‘AL_LOOPING’
//为‘AL_TRUE’。这意味着源播放直到停止时结束。他将不断的循环播放。
void SetListenervalues()
{
    alListenerfv(AL_POSITION, ListenerPos);
    alListenerfv(AL_VELOCITY, ListenerVel);
    alListenerfv(AL_ORIENTATION, ListenerOri);
}
 
void KillALData()
{
    alDeleteBuffers(1, &Buffer);
    alDeleteSources(1, &Source);
    alutExit();
}
//这里没有改变。
int main(int argc, char *argv[])
{
    // 初始OPENAL并清错误字节
    alutInit(NULL,0);
    alGetError();
 
    // 载入WAV数据.
    if (LoadALData() == AL_FALSE)
        return 0;
 
    SetListenervalues();
 
    // 设置退出函数.
    atexit(KillALData);
 
    // 开始源的播放.
    alSourcePlay(Source);
 
    //循环
    ALint time = 0;
    ALint elapse = 0;
 
    while (1)
    {
        elapse += clock() - time;
        time += elapse;
 
        if (elapse > 50)
        {
            elapse = 0;
 
            SourcePos[0] += SourceVel[0];
            SourcePos[1] += SourceVel[1];
            SourcePos[2] += SourceVel[2];
 
            alSourcefv(Source, AL_POSITION, SourcePos);
        }
    }
 
 
    return 0;
}
 
//这里唯一的改变是增加了一个循环。他将代替播放和停止按钮。

// ==============================================================

构建64位目标

设置工程 include 目录,包含 openal-soft 的include及include\AL目录,包含 alut 的include及include\AL目录

设置工程 lib 目录,包含 openal-soft 的build\debug目录,包含 alut 的build\debug目录

加入库文件 OpenAL32.lib 及 alut.lib

如果报错:ALUT_ATTRIBUTE_DEPRECATED ,去掉 alut.h 中的这个声明好了。

把alut.dll, OpenAL32.dll 复制到生成的exe目录,执行。

openal alut vs2019编译相关推荐

  1. vs2019 编译 WRK 踩坑记录

    一.回顾 上一篇博客介绍了命令行编译 WRK 到调试的所有步骤,理论上我们已经可以开始学习了. 但是 IDE 可以方便的查找和修改函数,好处多多,所以这篇博客介绍如何使用 visual studio ...

  2. VS2019编译 当前最新版chromium

    VS2019编译 当前最新版chromium 之前编译过webrtc和chromium, 由于长时间没用,被我删除了, 最近在最新版本的google浏览器上遇到了播放器兼容性问题,老版本的google ...

  3. 3D进阶之OSG:从VS2019编译osgEarth开始

    3D库比较多,一般学习的有PCL的VTK,库比较大,集成了相当多不错的算法,对开发水平是个考验:OGRE由于其插件式架构,使得在机器人开发方面应用广泛:相对而言,OSG比较小众,可以用来构建模拟仿真的 ...

  4. SeetaFace2-master在Windows10 VS2019编译的两种方法

    SeetaFace2-master在Windows10 VS2019编译的两种方法 SeetaFace2简介 方法一 方法二 SeetaFace2简介 SeetaFace2 是一个完整的人脸识别项目, ...

  5. Win10中用VS2019编译live555

    前言 说明,本文是在Win10中用VS2019编译live555的过程中,对遇到的问题进行说明.编译过程主要参考的是下面一篇文章,在此表示感谢: https://blog.csdn.net/m0_37 ...

  6. VS2019编译MQTT库 C/C++(超详细,含示例工程)

    目录 前言 一.前期准备 1.1 获取mqtt库 1.2 安装openssl 1.3 安装cmake-gui 二.生成C工程代码 三.编译C库 3.1 创建工程目录 3.2 修改输出目录 四.生成C+ ...

  7. 【已解决】海康威视MFC综合示例(C++ 官网Demo)采用VS2019编译异常如何解决?

    采用VS2019编译运行海康威视MFC综合示例Demo 一.文章背景: 二.操作步骤: 1.海康威视设备网络SDK下载: 2.VS2019 MFC开发环境配置: 3.MFC综合示例编译运行: 三.小结 ...

  8. vs2019编译obs源码生成sln解决方案

    目录 一.OBS介绍 二.OBS源码下载 三.Qt配置 四.设置依赖库目录 五.开始编译 六.main函数 七.视频教程 一.OBS介绍   obs的编译不是很难,只要代码下的全,环境变量配的ok, ...

  9. Windows下使用VS2019编译libiconv-1.16

    Windows下使用VS2019编译libiconv-1.16 参考了 https://blog.csdn.net/zhouguangcai8/article/details/105270657,在其 ...

最新文章

  1. python 流写入文件_python文件流操作
  2. Google colab: 修改系统时间 change system time
  3. 缓解数据包丢失对WAN的影响是当务之急—Vecloud微云
  4. 【ROM修改教程】添加高级电源重启菜单(安卓4.0.4官方ROM)
  5. 【Qt】Qt数据库简介
  6. c#事件的发布-订阅模型_微信灰度测试订阅号付费功能,小米推出最便宜5G套餐,腾讯辟谣高管猝死赔钱事件,核心期刊发布十岁儿童文章,这就是今天的其他大新闻!...
  7. 剑指 Offer 32 - I. 从上到下打印二叉树
  8. java ora 28040_Oracle 11g与112c中ORA-28040 错误解决
  9. Java番外篇1——正则表达式
  10. java使用rabbitmq
  11. java开发_eclipse导出为war文件,热部署到tomcat运行总结[转]
  12. RF工具ride使用
  13. 深入解析 Flink 的算子链机制
  14. texlive的安装
  15. Sublime Text设置中文
  16. 2019中国国际大数据产业博览会将5月26-29日贵阳举行
  17. 2020年中式烹调师(高级)考试试卷及中式烹调师(高级)模拟考试题
  18. HTML无序列表四大名著
  19. 网络摄像头IPC国标GB28181协议国标安防视频流媒体平台EasyGBS视频流不上线排查步骤
  20. IDM无法找到服务器magnet IDM服务器禁止访问此文件

热门文章

  1. 用友U8服务器修改数据库端口,用友U8 u8数据库如何修改端口号
  2. 判赔50万,海尔集团要将上诉进行到底
  3. photoshopCS3使用时总是慢半拍
  4. cdoj1339郭大侠与线上游戏
  5. Mongodb(三)Mongodb复制
  6. 智能手机排排坐,十大操作系统下的旗舰手机
  7. c webservice html,在WEBSERVICE中用于描述WEB服务的语言是()A、WSDLB、UMLC、 - 信管网...
  8. java kfs_Hypertable hbase hdfs kfs java与c++的较量
  9. 蓝牙HC-05上电自动互联(最详细教程)
  10. 安全防护工具之:Clair