如何以编程方式查找动态库文件的位置?

时间:2010-11-04 18:13:01

标签: c++ windows linux macos

我想在特定库的系统(如果有)中找到路径 现在我有一个内置的路径:

dllNameFrodo = "/usr/local/frodo/lib/libfrodo.dylib";

但当然是丑陋而且不便携。

有什么想法吗?

3 个答案:

答案 0 :(得分:1)

这就像搜索任何类型的文件一样 - 鉴于它的名称或扩展名以及从哪里开始搜索的一些提示,所以如果你想要的是以便携方式搜索你有2个解决方案:

  1. 使用boost::filesystem
  2. 构建一些搜索功能,并使用特定于平台的功能在每个平台上实施一次。提示:这就是boost :: filesystem - 在上面加糖 - 但如果你不想或不能使用boost,那么它是唯一的“便携式”替代品。

答案 1 :(得分:1)

不是尝试加载硬编码路径,而是使用应用程序在本地打包库,以便知道它的安装位置,或者更好,只需让运行时加载程序自动查找并加载它。这样,用户可以使用LD_LIBRARY_PATH和LD_PRELOAD来选择要加载的版本。

答案 2 :(得分:0)

在Windows上,您可以使用FindFirstFile和家人。

这是非常特殊的要求 - 可能很难找到便携式实现,并且在任何情况下都会使用特定于平台的API,如果它将是最佳的。