【问题标题】:Call Function from Dynamic Library从动态库调用函数
【发布时间】:2011-07-28 02:16:26
【问题描述】:

当我们在编译时不知道函数的名称时,如果可能的话,加载动态库并调用其中一个函数的最佳方法是什么?

例如,有没有办法让程序从文件中读取字符串,然后加载 DLL 并搜索并调用名称为从文件中读取的字符串的函数?

非常感谢您的帮助。

【问题讨论】:

  • 我的目标是成为一个更普遍的问题;我现在在 Linux 上,所以我更喜欢 Linux,但 Windows 示例也可以。

标签: c++ windows function dll dynamic


【解决方案1】:

在所有地方的维基百科上有一个example,展示了如何在运行时使用LoadLibrary() 函数。您将看到函数名称被指定为字符串。您需要编写代码来搜索函数名称并将其传递给类似的代码。

在 Linux 上,您可以使用 dlopen() and dlsym() 函数来做到这一点。

【讨论】:

  • 谢谢。您还知道 Linux 示例吗?
  • LoadLibrary() 是一个 Windows 函数,我以为你有一个通常表示 Windows 的 DLL。我刚刚添加了一个 linux 示例的链接。
  • 感谢 Linux 示例。
  • btw 根据 C 和 C++ 标准,对函数使用 dlsym 会产生未定义的行为。但实际上这样做很好。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-01-24
  • 2021-10-18
  • 2019-01-23
  • 2015-08-07
  • 1970-01-01
  • 1970-01-01
  • 2021-11-17
相关资源
最近更新 更多