Найти тему
Rust.rs

Установка Asio для CPAL (крейт rust)

Оглавление

Описание.

1. Установка и загрузка.

2. Настройка и подготовка.

3. Изменение кода и компиляция.

оригинальную инструкцию можно найти здесь. https://github.com/RustAudio/cpal/blob/master/README.md

# 1 Часть. Установка и загрузка.

1. Установите [Microsoft Visual Studio]. (☑Разработка классических приложений на С++).

2. Установите [ASIO4ALL] или любой ASIO Драйвер.

3. Скачайте [ASIO SDK(2.3.1).zip]. (Распакуйте архив).

4. Установите [LLVM (7.0.0)](Как в оригинальной инструкции) или [Скачал LLVM-15.0.2-win64.exe] (Как я.)

# 2 Часть. Настройка и подготовка.

1. Установите Microsoft Visual Studio, ASIO4ALL и LLVM.

2. Распакуйте архив ASIO SDK в любую папку. (Например "C:\.asio").

3. Назначьте полный путь к ASIO SDK, для переменой среды `CPAL_ASIO_DIR`.

4. Назначьте полный путь к LLVM `bin`, для переменой среды `LIBCLANG_PATH`.

Дополнительно как выполнить пункт 3 и 4:
- Вариант 1 в терминале.
```
setx CPAL_ASIO_DIR "C:\.asio"
setx LIBCLANG_PATH "C:\Program Files\LLVM\bin"
```
- Вариант 2
Зайдите в ... Этот компьютер -> Свойство -> Дополнительные параметры системы -> Дополнительно -> Переменные среды -> Создайте в переменную среды пользователя
CPAL_ASIO_DIR со значением C:\.asio
LIBCLANG_PATH со значением C:\Program Files\LLVM\bin

5. Загрузка VCVARS

На 64-битных машинах выполните:

  • "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" amd64

На 32-битных машинах запустите:

  • "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" x86
Обратите внимание, что в зависимости от вашей версии Visual Studio, этот скрипт может находиться в несколько ином месте.
В моём случае:
"C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Auxiliary\Build\vcvarsall.bat"

# 3 часть. Изменение кода и компиляция.

1. Ваш проект должен содержать, крейт c включенной features = ["asio"], в файле Cargo.toml.

```toml
cpal = { version = "*", features = ["asio"] }
```

2. Выберите хост ASIO, в вашей программе.

```rust
//Создать host (Asio)
let host;
#[cfg(target_os = "windows")]
{
host = cpal::host_from_id(cpal::HostId::Asio)
.expect("failed to initialise ASIO host");
}
//Посмотреть поддерживаемые хосты
println!("Поддерживаемые хосты:\n {:?}", cpal::ALL_HOSTS);
```

3. Возможно появится ошибка выполните `cargo clean`.

4. Выполните компиляцию.

cargo run

cargo build

# Ошибки

В примере компиляции было другое, но у меня выдает ошибку

```

cargo build --features "asio"
error: none of the selected packages contains these features: asio

```

у меня была ещё одна ошибка, она была связана с неправильной директорией asio.

```

error: failed to run custom build command for `asio-sys v0.2.1`
Caused by:
process didn't exit successfully: `D:\Coding\RustLung\daw\target\debug\build\asio-sys-4800fd8b64401f5f\build-script-build` (exit code: 1)
--- stderr
error occurred: Command "C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\BuildTools\\VC\\Tools\\MSVC\\14.29.30133\\bin\\HostX64\\x64\\cl.exe" "-nologo" "-MD" "-Z7" "-Brepro" "-I" "C:\\name\\.asio/host" "-I" "C:\\name\\.asio/common" "-I" "C:\\name\\.asio/host/pc" "-I" "asio-link/helpers.hpp" "-W4" "-FoD:\\Coding\\RustLung\\daw\\target\\debug\\build\\asio-sys-0c345fa7bdcbc593\\out\\asio-link/helpers.o" "-c" "asio-link/helpers.cpp" with args "cl.exe" did not execute successfully (status code exit code: 2).

```