我为Mac OS编写了一个C静态库 . 适用于使用智能卡运行的应用程序 . 因此,它使用了PCSC.framework . 在编译mylib期间,没有问题,并且派生了静态lib . 我创建了一个应用程序,它是命令行工具 . 我将静态库添加到应用程序中 . 当我从lib的一个类创建一个实例并调用实例的方法时,我为arcitecture x86_64:SCardConnect,SCardEstablishContext和其他pcsc函数带来了错误的未定义符号
为了解决这些错误,我尝试了以下方法;
我在从64位更改架构32位intel之后重建了静态库 . 然后我也重建了测试应用程序 . 但错误持续相似 . 与arcitecture i386的早期未定义符号有所不同 .
我有两个arcitectures x86_64和i386的PCSC . libccid适用于i386 . 我正确运行pcsctest .
请让我知道如何解决它 .
1 回答
构建静态库不会链接和解析框架的所有符号 . 看看以下类似的问题:
Static Library using frameworks in specific projects .
Include framework in Xcode static library?
要考虑的一些备选方案是:
包括PCSC.framework作为应用程序的框架依赖关系,就像使用库一样 .
创建框架或动态库而不是静态库 .
在PCSC.framework上调用dlopen / dlsym .