0

我为 Mac OS 编写了一个 C++ 静态库。它适用于使用智能卡运行的应用程序。因此,它使用了 PCSC.framework。在编译mylib的过程中,没有问题,导出了一个静态的lib。我创建了一个应用程序,它是命令行工具。我将我的静态库添加到应用程序中。当我从 lib 的一个类创建一个实例并调用该实例的一个方法时,我为架构 x86_64 获取了错误未定义符号:SCardConnect、SCardEstablishContext 和其他 pcsc 函数

为了解决这些错误,我尝试了以下方法;

在将架构从 64 位更改为 32 位英特尔后,我重建了静态库。然后我还重建了测试应用程序。但类似的错误仍在继续。只是与架构 i386 的早期未定义符号不同。

我有适用于 x86_64 和 i386 的 PCSC。libccid 用于 i386。我正确运行 pcsctest。

请让我知道如何解决它。

4

1 回答 1

1

构建静态库不会链接和解析框架的所有符号。看看以下类似的问题:

一些需要考虑的替代方案是:

  • 将 PCSC.framework 包括为您的应用程序的框架依赖项,就像您对库所做的那样。
  • 创建框架或动态库而不是静态库。
  • 在 PCSC.framework 上调用 dlopen/dlsym。
于 2013-12-25T13:05:24.003 回答