在静态框架中嵌入静态框架会在使用时出错

时间:2018-06-11 07:32:25

标签: ios swift xcode swift-framework

我们面临着一个缓慢的应用启动,其原因是我们有很多动态框架。

在阅读了互联网上的一些文章之后,解决方案现在应该是将所有内容移动到1个动态库中,并使所有其他库保持静态。

现在我们有一个内部动态框架,其中包含来自第三方供应商的静态库。当我使这个框架静态时,框架构建静态框架但是当我在项目中使用框架时,似乎静态第3方供应商不在框架内。该框架具有以下依赖关系:

  • libcryptopp.a
  • 的libstdc ++。6.0.9.dylib

我还将-ObjC和-all_load标志添加到其他链接器标志。

现在,当我运行项目时出现以下错误:

Undefined symbols for architecture x86_64:
  "RunTestDataFile(char const*, InCryptoPP::NameValuePairs const&, bool)", referenced from:
      ValidateAll(bool) in Juno(validat1.o)
      ValidateRijndael() in Juno(validat1.o)
      ValidateSalsa() in Juno(validat1.o)
      ValidateSosemanuk() in Juno(validat1.o)
      ValidateVMAC() in Juno(validat1.o)
      ValidateCCM() in Juno(validat1.o)
      ValidateGCM() in Juno(validat1.o)
      ...
  "GlobalRNG()", referenced from:
      BenchMark(char const*, InCryptoPP::StreamTransformation&, double) in Juno(bench1.o)
      BenchMark(char const*, InCryptoPP::HashTransformation&, double) in Juno(bench1.o)
      BenchMark(char const*, InCryptoPP::BufferedTransformation&, double) in Juno(bench1.o)
      BenchMarkEncryption(char const*, InCryptoPP::PK_Encryptor&, double, bool) in Juno(bench2.o)
      BenchMarkDecryption(char const*, InCryptoPP::PK_Decryptor&, InCryptoPP::PK_Encryptor&, double) in Juno(bench2.o)
      BenchMarkSigning(char const*, InCryptoPP::PK_Signer&, double, bool) in Juno(bench2.o)
      BenchMarkVerification(char const*, InCryptoPP::PK_Signer const&, InCryptoPP::PK_Verifier&, double, bool) in Juno(bench2.o)
      ...
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

我失踪了什么?

0 个答案:

没有答案