g++ - 如何使用 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
解决方案
您假设为您刚刚构建的 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 的最简单(但不一定是最好)的方法是将其复制到与您的程序相同的目录中。
推荐阅读
- python - 无法使用 Azure SDK for Python 为 Azure Blob 设置属性
- html - HTML 链接未正确重定向 - 它导航到 www.oldpage.com/http://www.google.com?
- java - 如何通过 camel-grpc-starter 激活 TLS?
- java - 如何输出完整的详细信息
- python - 如果部分来自 elif 部分,我如何重新触发?
- c - 带有 shell 输出重定向的 execvp shell 命令不起作用
- java - Java:Google PubSub 服务器在确认截止日期(10 秒)后不重新发送消息
- asp.net-core-2.0 - 使用 Net Core 2.2 覆盖 appsettings.production 中的 Serilog 设置
- python - 根据元素长度删除python数据框中字符串的元素
- reactjs - 在 TypeScript 中将 RefObject 反应为数组