【问题标题】:How to link an .la file using Mingw如何使用 Mingw 链接 .la 文件
【发布时间】:2019-03-08 17:13:13
【问题描述】:

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

【问题讨论】:

    标签: g++ mingw dynamic-linking portaudio lib


    【解决方案1】:

    文件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 除非操作系统加载器可以通过其standard DLL search algorithm找到DLL

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多