Я пытаюсь включить общую библиотеку SoundTouch в мой проект Qt. Я загрузил репозиторий SoundTouch, запустил ./bootstrap
, ./configure
, make
и make install
, и теперь я хочу создать общую библиотеку для macOS.
Я использовал этот скрипт для компиляции общего library.
clang++ -fPIC -dynamiclib -DDLL_EXPORTS -fvisibility=hidden -I../../include -o libSoundTouch.dylib \
SoundTouchDLL.cpp ../SoundTouch/*.cpp -I../SoundTouch -O3 -msse
Затем в свой файл .pro я включаю библиотеку
macx: LIBS += -L$$PWD/Lib/ -lSoundTouch
INCLUDEPATH += $$PWD/Lib
DEPENDPATH += $$PWD/Lib
. В основной файл я включил заголовок библиотеки и попытался использовать его с функцией примера. как qDebug () << soundtouch_getVersionString();
но я получаю эту ошибку
Undefined symbols for architecture x86_64:
"soundtouch_getVersionString()", referenced from:
_main in main.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
но символы, кажется, находятся в dylib, потому что я исследовал его с помощью инструмента MachOView, и я могу видеть его, здесь a снимок экрана.
Запуск nm при захвате Dylib soundtouch_getVersionString:
nm libSoundTouch.dylib | grep soundtouch_getVersionString
0000000000000e60 T _soundtouch_getVersionString
0000000000000e70 T _soundtouch_getVersionString2
Что не так? Есть ли у вас какие-либо предложения?