Как связать файл .la, используя Mingw - PullRequest
1 голос
/ 08 марта 2019

Я собираю portaudio под Windows 10, и я не знаю, как связать файл libportaudio.la в моем каталоге сборки portaudio.

Я использовал MSYS с MinGW для сборки portaudio, выполнив следующие действия:это: http://portaudio.com/docs/v19-doxydocs/compile_windows_mingw.html

(но я не make install)

Моя команда сборки в cmd:

g++ test.cpp -I"portaudio_dir/include" -L"portaudio_dir/lib" -lportaudio

, и она не работает с cannot find lportaudio

1 Ответ

0 голосов
/ 09 марта 2019

Файл libportaudio.la, который, по вашему мнению, является библиотекой PortAudio, которую вы только что создали, не является библиотекой.

$ file libportaudio.la 
libportaudio.la: libtool library file, ASCII text

Это текстовый файл пар ключ-значение, который генерируется libtoolдля облегчения независимой от платформы связи с реальной библиотекой в ​​ GNU autotools проектах, таких как сам PortAudio.Вы можете открыть его в текстовом редакторе и прочитать его.

Реальные (статические и динамические) библиотеки PortAudio, которые вы создали:

./configure
make

, расположены в скрытом подкаталоге:

portaudio/lib/.libs

, что обычно для библиотек, созданных с помощью автоинструментов.Ожидается, что после make вы запустите make install (как root), который скопирует библиотеки и связанные с ними заголовочные файлы в каталоги установки по умолчанию или альтернативные, которые вы указали с помощью:

./configure PREFIX=<prefix_dir>

Как вы говорите, вы не запускали make install.Если вы хотите связать программу с libportaudio, в то время как статические и динамические библиотеки остаются только в каталоге сборки, вам необходимо:

$ g++ test.cpp -I"portaudio_dir/include" -L"portaudio_dir/lib/.libs" -lportaudio

Но помните, что даже если вы успешно связываете такую ​​программу сдинамическая библиотека portaudio_?.dll, эта программа не сможет загрузить DLL во время выполнения , если только загрузчик ОС не сможет найти DLL с помощью стандартного алгоритма поиска DLL

Самый простой- но не обязательно лучший - способ убедиться, что DLL найдена во время выполнения, - это скопировать ее в тот же каталог, что и ваша программа.

...