【问题标题】:is FreeLibrary() working on linux?FreeLibrary() 在 linux 上工作吗?
【发布时间】:2014-09-01 01:04:45
【问题描述】:

我正在查看某人的代码(也许是你的 :D ),其中有一个名为 FreeLibrary() 的函数。

我想知道这个功能是否也适用于 linux。实际上,我尝试用谷歌搜索它,但只有一些与 Windows 操作系统相关的页面。

如果这个函数不是 linux 的,那么 linux 的等效函数是什么?

【问题讨论】:

  • 我不知道你的“更新”是什么意思。该代码根本不应该编译。我希望 g++ 首先抱怨 closeDL() 被重新定义,即使 g++ 没有抱怨未知符号“HMODULE”。
  • hmmm...实际上我明白我没有看到应答器#ifdef _win32 所以没关系,我会删除我的更新

标签: c++ linux shared-libraries


【解决方案1】:

基于来自这里的 FreeLibrary() 的描述:

http://msdn.microsoft.com/en-us/library/windows/desktop/ms683152%28v=vs.85%29.aspx

Linux中的等效函数是dlclose():

http://manpages.courier-mta.org/htmlman3/dlopen.3.html

【讨论】:

    【解决方案2】:

    FreeLibrary Windows 函数 description

    释放加载的动态链接库 (DLL) 模块,并在必要时减少其引用计数。当引用计数为零时,模块从调用进程的地址空间中卸载,句柄不再有效。

    Linux dlclose function 非常相似

    函数 dlclose() 减少动态库句柄句柄上的引用计数。如果引用计数降至零并且没有其他加载的库在其中使用符号,则卸载动态库。

    网上有很多关于如何使用Linux动态库的例子,例如this one

    【讨论】:

    • 我刚刚阅读了整个页面(最后一个网址)。这很有启发性。你值得 +1
    猜你喜欢
    • 1970-01-01
    • 2012-05-20
    • 2012-01-28
    • 2012-07-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-09
    • 2022-01-23
    相关资源
    最近更新 更多