C++ Apple Mach-O链接器错误:架构armv7 Google Protobuf的未定义符号

C++ Apple Mach-O链接器错误:架构armv7 Google Protobuf的未定义符号,c++,objective-c,xcode,frameworks,protocol-buffers,C++,Objective C,Xcode,Frameworks,Protocol Buffers,我一直在从事一个包含两部分的项目: 一个静态库(.framework) 使用我的(.framework)静态库的演示应用程序 我了解到,添加到.framework(即opencv2.framework)中的任何.framework都必须添加到我的演示应用程序中。我还了解到,架构的构建设置必须相同,并且必须设置构建设置搜索路径 很高兴,我已经在演示应用程序中构建和使用.framework有一段时间了。最近,我在.framework中添加了Google协议缓冲区 我的.framework正在编译中,

我一直在从事一个包含两部分的项目:

  • 一个静态库(.framework)
  • 使用我的(.framework)静态库的演示应用程序
  • 我了解到,添加到.framework(即opencv2.framework)中的任何.framework都必须添加到我的演示应用程序中。我还了解到,架构的构建设置必须相同,并且必须设置构建设置搜索路径

    很高兴,我已经在演示应用程序中构建和使用.framework有一段时间了。最近,我在.framework中添加了Google协议缓冲区

  • 我的.framework正在编译中,在.framework中似乎一切正常
  • 当然,我的演示应用程序不是很满意
  • 现在我已经将libprotobuf lite.a添加到我的演示应用程序中,并将路径添加到标题搜索路径中的标题文件中

    这应该能奏效。但是,我收到了以下错误,到目前为止还没有找到答案。以下是错误日志:

    Undefined symbols for architecture armv7:
      "vtable for google_public::protobuf::Message", referenced from:
          google_public::protobuf::Message::Message() in Test-Remote-iOS-Aggregate(ftype.pb.o)
      NOTE: a missing vtable usually means the first non-inline virtual member function has no definition.
      "typeinfo for google_public::protobuf::Message", referenced from:
          typeinfo for message::FtypeMessage in Test-Remote-iOS-Aggregate(ftype.pb.o)
          message::FtypeMessage const* google_public::protobuf::internal::dynamic_cast_if_available<message::FtypeMessage const*, google_public::protobuf::Message const*>(google_public::protobuf::Message const*) in Test-Remote-iOS-Aggregate(ftype.pb.o)
      "google_public::protobuf::Message::GetTypeName() const", referenced from:
          vtable for message::FtypeMessage in Test-Remote-iOS-Aggregate(ftype.pb.o)
      "google_public::protobuf::Message::InitializationErrorString() const", referenced from:
          vtable for message::FtypeMessage in Test-Remote-iOS-Aggregate(ftype.pb.o)
      "google_public::protobuf::Message::SpaceUsed() const", referenced from:
          vtable for message::FtypeMessage in Test-Remote-iOS-Aggregate(ftype.pb.o)
      "google_public::protobuf::internal::ReflectionOps::Merge(google_public::protobuf::Message const&, google_public::protobuf::Message*)", referenced from:
          message::FtypeMessage::MergeFrom(google_public::protobuf::Message const&) in Test-Remote-iOS-Aggregate(ftype.pb.o)
      "google_public::protobuf::internal::WireFormat::VerifyUTF8StringFallback(char const*, int, google_public::protobuf::internal::WireFormat::Operation)", referenced from:
          google_public::protobuf::internal::WireFormat::VerifyUTF8String(char const*, int, google_public::protobuf::internal::WireFormat::Operation) in Test-Remote-iOS-Aggregate(ftype.pb.o)
      "_OBJC_CLASS_$_CVImageConverter", referenced from:
          objc-class-ref in Test-Remote-iOS-Aggregate(IDMessageCommand.o)
      "google_public::protobuf::UnknownFieldSet::ClearFallback()", referenced from:
          google_public::protobuf::UnknownFieldSet::Clear() in Test-Remote-iOS-Aggregate(ftype.pb.o)
      "google_public::protobuf::Message::DiscardUnknownFields()", referenced from:
          vtable for message::FtypeMessage in Test-Remote-iOS-Aggregate(ftype.pb.o)
      "google_public::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(google_public::protobuf::UnknownFieldSet const&)", referenced from:
          message::FtypeMessage::ByteSize() const in Test-Remote-iOS-Aggregate(ftype.pb.o)
      "google_public::protobuf::internal::WireFormat::SerializeUnknownFields(google_public::protobuf::UnknownFieldSet const&, google_public::protobuf::io::CodedOutputStream*)", referenced from:
          message::FtypeMessage::SerializeWithCachedSizes(google_public::protobuf::io::CodedOutputStream*) const in Test-Remote-iOS-Aggregate(ftype.pb.o)
      "google_public::protobuf::MessageFactory::InternalRegisterGeneratedFile(char const*, void (*)(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&))", referenced from:
          message::protobuf_AddDesc_ftype_2eproto() in Test-Remote-iOS-Aggregate(ftype.pb.o)
      "google_public::protobuf::internal::WireFormat::SkipField(google_public::protobuf::io::CodedInputStream*, unsigned int, google_public::protobuf::UnknownFieldSet*)", referenced from:
          message::FtypeMessage::MergePartialFromCodedStream(google_public::protobuf::io::CodedInputStream*) in Test-Remote-iOS-Aggregate(ftype.pb.o)
      "google_public::protobuf::UnknownFieldSet::MergeFrom(google_public::protobuf::UnknownFieldSet const&)", referenced from:
          message::FtypeMessage::MergeFrom(message::FtypeMessage const&) in Test-Remote-iOS-Aggregate(ftype.pb.o)
      "google_public::protobuf::internal::GeneratedMessageReflection::GeneratedMessageReflection(google_public::protobuf::Descriptor const*, google_public::protobuf::Message const*, int const*, int, int, int, google_public::protobuf::DescriptorPool const*, google_public::protobuf::MessageFactory*, int)", referenced from:
          message::protobuf_AssignDesc_ftype_2eproto() in Test-Remote-iOS-Aggregate(ftype.pb.o)
      "google_public::protobuf::Message::~Message()", referenced from:
          message::FtypeMessage::FtypeMessage() in Test-Remote-iOS-Aggregate(ftype.pb.o)
          message::FtypeMessage::~FtypeMessage() in Test-Remote-iOS-Aggregate(ftype.pb.o)
      "google_public::protobuf::UnknownFieldSet::UnknownFieldSet()", referenced from:
          message::FtypeMessage::FtypeMessage() in Test-Remote-iOS-Aggregate(ftype.pb.o)
      "google_public::protobuf::Message::CheckTypeAndMergeFrom(google_public::protobuf::MessageLite const&)", referenced from:
          vtable for message::FtypeMessage in Test-Remote-iOS-Aggregate(ftype.pb.o)
      "google_public::protobuf::DescriptorPool::generated_pool()", referenced from:
          message::protobuf_AssignDesc_ftype_2eproto() in Test-Remote-iOS-Aggregate(ftype.pb.o)
      "google_public::protobuf::DescriptorPool::InternalAddGeneratedFile(void const*, int)", referenced from:
          message::protobuf_AddDesc_ftype_2eproto() in Test-Remote-iOS-Aggregate(ftype.pb.o)
      "google_public::protobuf::Message::SerializeToOstream(std::__1::basic_ostream<char, std::__1::char_traits<char> >*) const", referenced from:
          message::TestMessaging::ftypeMessage(void const*, unsigned long) in Test-Remote-iOS-Aggregate(TestMessaging.o)
      "google_public::protobuf::MessageFactory::InternalRegisterGeneratedMessage(google_public::protobuf::Descriptor const*, google_public::protobuf::Message const*)", referenced from:
          message::(anonymous namespace)::protobuf_RegisterTypes(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) in Test-Remote-iOS-Aggregate(ftype.pb.o)
      "google_public::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(google_public::protobuf::UnknownFieldSet const&, unsigned char*)", referenced from:
          message::FtypeMessage::SerializeWithCachedSizesToArray(unsigned char*) const in Test-Remote-iOS-Aggregate(ftype.pb.o)
      "google_public::protobuf::DescriptorPool::FindFileByName(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) const", referenced from:
          message::protobuf_AssignDesc_ftype_2eproto() in Test-Remote-iOS-Aggregate(ftype.pb.o)
      "google_public::protobuf::MessageFactory::generated_factory()", referenced from:
          message::protobuf_AssignDesc_ftype_2eproto() in Test-Remote-iOS-Aggregate(ftype.pb.o)
      "google_public::protobuf::UnknownFieldSet::~UnknownFieldSet()", referenced from:
          message::FtypeMessage::FtypeMessage() in Test-Remote-iOS-Aggregate(ftype.pb.o)
          message::FtypeMessage::~FtypeMessage() in Test-Remote-iOS-Aggregate(ftype.pb.o)
    ld: symbol(s) not found for architecture armv7
    clang: error: linker command failed with exit code 1 (use -v to see invocation)
    
    架构armv7的未定义符号: “谷歌vtable_public::protobuf::Message”,引用自: 测试远程iOS聚合(ftype.pb.o)中的google_public::protobuf::Message::Message() 注意:缺少vtable通常意味着第一个非内联虚拟成员函数没有定义。 “google_public::protobuf::Message的类型信息”,引用自: 测试远程iOS聚合(ftype.pb.o)中消息的类型信息::FtypeMessage 测试远程iOS聚合(ftype.pb.o)中的message::FtypeMessage const*google\u public::protobuf::internal::dynamic\u cast\u如果可用(google\u public::protobuf::message const*) “google_public::protobuf::Message::GetTypeName()const”,引用自: 测试远程iOS聚合(ftype.pb.o)中的消息vtable::FtypeMessage “google_public::protobuf::Message::InitializationErrorString()const”,引用自: 测试远程iOS聚合(ftype.pb.o)中的消息vtable::FtypeMessage “google_public::protobuf::Message::SpaceUsed()const”,引用自: 测试远程iOS聚合(ftype.pb.o)中的消息vtable::FtypeMessage “google_public::protobuf::internal::ReflectionOps::Merge(google_public::protobuf::Message const&,google_public::protobuf::Message*)”,引用自: 测试远程iOS聚合(ftype.pb.o)中的message::FtypeMessage::MergeFrom(google_public::protobuf::message const&) “google_public::protobuf::internal::WireFormat::VerifyUTF8StringFallback(char const*,int,google_public::protobuf::internal::WireFormat::Operation)”,引用自: 测试远程iOS聚合(ftype.pb.o)中的google_public::protobuf::internal::WireFormat::VerifyUTF8String(char const*,int,google_public::protobuf::internal::WireFormat::Operation) “_OBJC_CLASS_$_CVImageConverter”,引用自: 测试远程iOS聚合中的objc类引用(IDMessageCommand.o) “google_public::protobuf::UnknownFieldSet::ClearFallback()”,引用自: 测试远程iOS聚合(ftype.pb.o)中的google_public::protobuf::UnknownFieldSet::Clear() “google_public::protobuf::Message::DiscardUnknownFields()”,引用自: 测试远程iOS聚合(ftype.pb.o)中的消息vtable::FtypeMessage “google_public::protobuf::internal::WireFormat::ComputeUnknowFieldsSize(google_public::protobuf::UnknownFieldSet const&)”,引用自: 测试远程iOS聚合(ftype.pb.o)中的message::FtypeMessage::ByteSize()常量 “google_public::protobuf::internal::WireFormat::SerializeUnknownFields(google_public::protobuf::UnknownFieldSet const&,google_public::protobuf::io::CodeDoutpStream*)”,引用自: 测试远程iOS聚合(ftype.pb.o)中的message::FtypeMessage::SerializeWithCachedSizes(google_public::protobuf::io::CodeDoutpStream*)常量 “google_public::protobuf::MessageFactory::InternalRegisterGeneratedFile(char const*,void(*)(std::u 1::basic_string const&)”,引用自: 消息::测试远程iOS聚合(ftype.pb.o)中的protobuf_AddDesc_ftype_2eproto() “google_public::protobuf::internal::WireFormat::SkipField(google_public::protobuf::io::CodedInputStream*,unsigned int,google_public::protobuf::UnknownFieldSet*)”,引用自: 测试远程iOS聚合(ftype.pb.o)中的message::FtypeMessage::MergePartialFromCodedStream(google_public::protobuf::io::CodedInputStream*) “google_public::protobuf::UnknownFieldSet::MergeFrom(google_public::protobuf::UnknownFieldSet const&)”,引用自: 测试远程iOS聚合(ftype.pb.o)中的message::FtypeMessage::MergeFrom(message::FtypeMessage const&) “google_public::protobuf::internal::GeneratedMessageReflection::GeneratedMessageReflection(google_public::protobuf::Descriptor const*,google_public::protobuf::Message const*,int const*,int const*,int,int,google_public::protobuf::MessageFactory*,int)”,引用自: 消息::测试远程iOS聚合(ftype.pb.o)中的protobuf_AssignDesc_ftype_2eproto() “google_public::protobuf::Message::~Message()”,引用自: 测试远程iOS聚合(ftype.pb.o)中的message::FtypeMessage::FtypeMessage() message::FtypeMessage::~FtypeMessage()位于测试远程iOS聚合(ftype.pb.o)中 “google_public::protobuf::UnknownFieldSet::UnknownFieldSet()”,引用自: 测试远程iOS聚合(ftype.pb.o)中的message::FtypeMessage::FtypeMessage() “google_public::protobuf::Message::CheckTypeAndMergeFrom(google_public::protobuf::MessageLite const&)”,引用自: 测试远程iOS聚合(ftype.pb.o)中的消息vtable::FtypeMessage “google_public::protobuf::DescriptorPool::generated_pool()”,引用自: 消息::测试远程iOS聚合(ftype.pb.o)中的protobuf_AssignDesc_ftype_2eproto() “google_public::protobuf::DescriptorPool::