c - 有没有办法阻止 dlsym (module, "functionName") 每个函数?

标签 c shared-libraries pkcs#11 dlsym

我有一个共享库(更准确地说是一个 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 ...

最佳答案

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

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

关于c - 有没有办法阻止 dlsym (module, "functionName") 每个函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28969759/

相关文章:

c - RPL child 列表 Contiki

c - 链接共享对象时对 `test' 的 undefined reference

c - 无法从可执行共享库中打印 float

JavaCpp:如何指定 native 库?

java - JVM 在退出时挂起

java - 使用 keytool 找不到 SunPKCS11 提供程序

c - 使用 fprintf 时,我在输出中得到镜像的字符数组

c fwrite() 写入仅包含一个结构变量的文件?

c - C中字符的值

digital-signature - 如何使用智能卡在 Web 应用程序 (JavaScript) 中制作数字签名?