【问题标题】:Is there a way to prevent dlsym (module, "functionName") every function?有没有办法防止 dlsym (module, "functionName") 每个函数?
【发布时间】:2015-03-10 17:01:50
【问题描述】:

我有一个共享库(更准确地说是一个 PKCS#11 模块),我想编写一个可以加载和使用库的应用程序。

目前我正在像这样使用 dlsym:

My_C_GetSlotList = (CK_C_GetSlotList) dlsym (module, "C_GetSlotList");
if (!My_C_GetSlotList)  printf("Couldn't find function 'C_GetSlotList' in library: %s: %s\n", filename, dlerror ());

但该库确实有大约 68 个函数。 我想真正的问题是:我真的必须为每个功能都这样做吗?是否有一个包含所有函数列表的结构?也许我只是用错了 dlsym ...

【问题讨论】:

    标签: c shared-libraries pkcs#11 dlsym


    【解决方案1】:

    您只需使用一次 dlsym() 即可获取 C_GetFunctionList() 函数的函数指针,该函数将返回包含指向所有其他函数的指针的结构。

    您可以在PKCS#11 v2.20 specification 的第 106 页找到示例代码。

    【讨论】:

      【解决方案2】:
      1. 您可能只是将您的应用与共享库相关联,而完全忘记 dlsym
      2. 您不必dlsym 全部 68 个函数,而只需要那些您真正需要的函数。

      【讨论】:

      • 但我希望能够使用具有相同功能的另一个共享库。就我而言,我需要所有功能。
      猜你喜欢
      • 2019-02-15
      • 2020-10-10
      • 2018-09-11
      • 1970-01-01
      • 1970-01-01
      • 2015-10-11
      • 2021-12-03
      • 2017-01-17
      • 2010-09-28
      相关资源
      最近更新 更多