如何使用 Mingw link .la 文件

How to link an .la file using Mingw

我正在 Windows 10 下构建 portaudio,但我不知道如何 link 我的 portaudio 构建目录下的 libportaudio.la 文件。

我使用 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

您认为是 PortAudio 库的文件 libportaudio.la 刚建的不是图书馆。

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

这是libtool生成的键值对文本文件,方便平台无关 linkGNU autotools 中实际图书馆的年龄 项目,例如 PortAudio 本身。您可以在文本编辑器中打开并阅读。

您构建的真实(静态和动态)PortAudio 库:

./configure
make

位于隐藏的子目录中:

portaudio/lib/.libs

这对于使用 autotools 构建的库来说很常见。预计之后 make 您将 运行 make install(如 root),这将复制库 及其关联的头文件到默认安装目录,或者 您指定的替代选项:

./configure PREFIX=<prefix_dir>

正如你所说,你没有 运行 make install。如果你想 link 一个针对 libportaudio 的程序 而静态库和动态库只保留在构建目录中,您需要:

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

但请记住,即使您成功地 link 像这样针对动态的程序 库 portaudio_?.dll,该程序将无法在 运行 时间 加载 DLL 除非 OS 加载程序可以通过其 standard DLL search algorithm

找到 DLL

确保在 运行 时找到 DLL 的最简单但不一定是最好的方法是 将其复制到与您的程序相同的目录中。