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

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

我从64位更改了32位Intel架构后,重新构建了静态库。然后,我还重建了测试应用程序。但是错误仍然相似。与arcitecture i386的早期未定义符号仅有不同。

对于x86_64和i386架构,我都具有PCSC。 libccid用于i386。我正确运行pcsctest。

请让我知道我该如何解决。

最佳答案

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


Static Library using frameworks in specific projects
Include framework in Xcode static library?


要考虑的一些替代方法是:


包括PCSC.framework作为您的框架依赖项
应用程序,就像处理库一样。
创建框架或
动态库,而不是静态库。
在PCSC.framework上调用dlopen / dlsym。

关于c++ - Mac OS的静态库,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20772639/

10-13 02:59