Я изо всех сил пытался скомпилировать свою программу, используя FMOD в VS Code. Я новичок в компиляции с использованием чего-то другого, кроме компилятора Visual Studio по умолчанию, поэтому связывание с другими форматами файлов до сих пор было немного проблематичным. Моя программа должна быть скомпилирована с помощью GCC/G++ и использует архитектуру x64.
Я безуспешно пытался скомпилировать файлы .lib и .dll (не думаю, что они должны работать, но я где-то видел, что это возможно, если вы работаете под Windows?... ), который, что неудивительно, вернул кучу неопределенных ссылок. Файл .so выдает сообщение «Ошибка добавления символов: файл в неправильном формате» (я использовал тот, который находится в папке x86_64). У меня нет файла .a в папке x64 версии FMOD для Windows, использование x86 также возвращает неопределенные ссылки. Я попытался использовать бесплатную программу под названием Lib2A, чтобы получить версию x64, но файл не был выведен, а также не появилось сообщение об ошибке.
Я не совсем уверен, какой способ ссылки правильный на данный момент, вот флаги, которые я использую:
-std=c++17 -D UNICODE -mwindows -I C:\\Program Files (x86)\\FMOD SoundSystem\\FMOD Studio API Windows\\api\\core\\inc -L ${workspaceFolder}\\libraries -g ${workspaceFolder}\\*.cpp -l winmm -l wininet -l ws2_32 -l xinput -l gdi32 -l opengl32 -l fmod -o ${fileDirname}\\myapp.exe
Часть -l fmod также была ${workspaceFolder}\\libraries\\(the file I tried to load) в зависимости от моих попыток. Я пробовал загрузить файл .dll напрямую и косвенно, поместив его в папку .exe.





Попробовав различные решения, я в конечном итоге узнал, что использование структуры FMOD C++ несовместимо с используемым мной компилятором, т. е. необходимо использовать компилятор, такой как компилятор Microsoft.
Решение простое, но его реализация может занять некоторое время: замените все функции FMOD C++ их эквивалентами на C (например, используйте FMOD_System_Create вместо FMOD::System::create).