【问题标题】:Distributable application using portaudio and libsndfile使用 portaudio 和 libsndfile 的可分发应用程序
【发布时间】:2014-05-29 14:59:04
【问题描述】:

我使用 portaudio 和 libsndfile 编写了一个小型 C 程序,它只能在我的 PC 上运行。在其他系统中,它要求提供 libportaudio.dll 和 libsndfile.dll。我正在链接 -lportaudio 和 -lsndfile。

我想让这项工作无处不在(Windows)而不要求这样的事情?

我应该怎么做才能使这个应用程序 (.exe) 可分发?

(我正在使用代码块和 Mingw)

提前致谢。

【问题讨论】:

  • libsndfile 使用我相信的 LGPL 许可证。除非有静态链接异常,否则您不能静态链接 LGPL 代码。 PortAudio 使用 MIT 许可证,您可以(理论上)静态链接它。

标签: c dll linker portaudio libsndfile


【解决方案1】:

尝试将-static 传递给编译器,要求它使库引用静态,而不是动态。您可以通过在其上运行nm 来查看是否已成功使二进制文件静态链接。

当然,您还必须确保以这种方式重新分发库不会违反任何许可。

【讨论】:

  • 我试过了..还是不行...我什至尝试使用 -l portaudio.dll.a 和 -l libsndfile.dll.a 进行静态链接并删除 -lportaudio -lsndfile,然后它给出未定义对所用函数的引用。您能否提供一些示例编译方案?
猜你喜欢
  • 2014-08-06
  • 2015-02-08
  • 1970-01-01
  • 2020-02-26
  • 1970-01-01
  • 2012-12-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多