首页 > 解决方案 > 如何使用 Mingw 链接 .la 文件

问题描述

我正在 Windows 10 下构建 portaudio,但我不知道如何链接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

标签: g++mingwdynamic-linkingportaudiolib

解决方案


您假设为您刚刚构建的 PortAudio 库的文件libportaudio.la不是库。

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

它是一个键值对的文本文件,libtool生成它以促进GNU autotools 项目中实际库的独立于平台的链接,例如 PortAudio 本身。您可以在文本编辑器中打开它并阅读它。

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

./configure
make

位于隐藏的子目录中:

portaudio/lib/.libs

这对于使用自动工具构建的库来说很常见。预计在 make您运行make install(as 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 的最简单(但不一定是最好)的方法是将其复制到与您的程序相同的目录中。


推荐阅读