Использует ли SoundTouch C в Windows и C ++ в Linux?

Я пытаюсь интегрировать SoundTouch (https://www.surina.net/soundtouch/) в качестве общей библиотеки в кроссплатформенное приложение Qt. Версия в репозиториях Ubuntu, кажется, предоставляет интерфейс C ++, подобный этому:

this->soundTouchHandle = new SoundTouch();
this->soundTouchHandle->setSampleRate(44100);
this->soundTouchHandle->setChannels(2);

this->soundTouchHandle->setSetting(SETTING_USE_AA_FILTER, 1);
this->soundTouchHandle->setPitch(this->pitchScalingFactor);

Но похоже, что нормальный способ использовать его в Windows — через оболочку SoundTouchDLL C (которая обеспечивает __cdecl экспорт):

this->soundTouchHandle = soundtouch_createInstance();
soundtouch_setSampleRate(this->soundTouchHandle, 44100);
soundtouch_setChannels(this->soundTouchHandle, 2);

soundtouch_setSetting(this->soundTouchHandle, SETTING_USE_AA_FILTER, 1);
soundtouch_setPitch(this->soundTouchHandle, this->pitchScalingFactor);

Если я правильно понимаю, Linux не нуждается в __cdecl аннотации, интерфейс SoundTouchDLL на основе C специально для Windows. SoundTouchDLL.h четко содержит специфичный для Windows код (например, #include <windows.h>). С другой стороны, базовая библиотека C ++ SoundTouch не включает аннотации для экспорта любых символов с __cdecl, поэтому он не может использоваться в качестве общей библиотеки (DLL) в Windows, требуется интерфейс C.

Правильно ли я понял это? Действительно ли нормально использовать C API для SoundTouch в Windows, но использовать C ++ API в Linux? Есть ли способ использовать один и тот же API на обеих платформах (желательно без изменения SoundTouch)?

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]