DirectSound с использованием MinGW: неопределенная ссылка ‘DirectSoundCreate8’

Я хочу использовать DirectSound API (из DirectX) для обработки аудио выходов Windows. Для этого я создал «libdsound.a», как описано в следующих параграфах, потому что кажется, что я не могу использовать .dll или .lib для компилятора MinGW g ++.
Я установил DirectX SDK и скопировал dsound.lib в папку с именем «directsound». Из репозитория mingw-w64 я загрузил dsound.h и dsound.def в каталог «directsound» (все файлы, которые я использовал, были для x86).
Следующий это руководство Я использовал командную строку dlltool для создания libdsound.a:

dlltool -d dsound.def -l libdsound.a

В CLion я настроил CMake в CMakeLists.txt следующим образом:

cmake_minimum_required(VERSION 3.9)
project(fourier)
set(CMAKE_CXX_STANDARD 11)

link_directories(PATHTOTHISDIR/directsound)
include_directories(PATHTOTHISDIR/directsound)

add_executable(fourier main.cpp)
target_link_libraries(fourier dsound)

CLion говорит, что файл CMakeLists.txt в порядке. Каждый раз, когда я пытаюсь скомпилировать программу, сборка и компоновка работают нормально, но затем я получаю следующее сообщение об ошибке:

[ 50%] Building CXX object CMakeFiles/fourier.dir/main.cpp.obj
[100%] Linking CXX executable fourier.exe
CMakeFiles\fourier.dir/objects.a(main.cpp.obj): In function `main':
PATHTOPROJECT/main.cpp:11: undefined reference to `DirectSoundCreate8'
collect2.exe: error: ld returned 1 exit status
...

Вот как выглядит main.cpp (единственный исходный файл):

#pragma comment(lib, "libdsound.a")

#include <windows.h>
#include <dsound.h>

int main() {
LPDIRECTSOUND8 directsound;
DirectSoundCreate8(NULL, &directsound, NULL);

WAVEFORMATEX waveformat;
// ....

РЕДАКТИРОВАТЬ Удалось решить это благодаря совету VTT. То, как я создал libdsound.a, было неверным. Это должно было быть сделано так:

dlltool -D dsound.dll -d dsound.def -l libsound.a -k

Я должен был также создать файл .def самостоятельно.

reimp -c -d dsound.lib

Файл dsound.dll должен находиться в том же каталоге, что и исполняемый файл.

0

Решение

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

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

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

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector