<html>
  <head>

    <meta http-equiv="content-type" content="text/html; charset=utf-8">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    under the directory ndn-cxx,  after ./waf, getting this error:<br>
    <br>
    <br>
    [119/123] Linking build/libndn-cxx.a<br>
    [120/123] Linking build/bin/ndncatchunks3<br>
    [121/123] Linking build/bin/ndnsec<br>
    [122/123] Linking build/bin/ndnputchunks3<br>
    [123/123] Linking build/bin/tlvdump<br>
    Undefined symbols for architecture x86_64:<br>
      "vtable for CryptoPP::SHA256", referenced from:<br>
         
    ndn::SecTpmFile::Impl::transformName(std::__1::basic_string<char,
    std::__1::char_traits<char>, std::__1::allocator<char>
    > const&, std::__1::basic_string<char,
    std::__1::char_traits<char>, std::__1::allocator<char>
    > const&) in libndn-cxx.a(sec-tpm-file.cpp.2.o)<br>
         
    CryptoPP::DL_SignerImpl<CryptoPP::DL_SignatureSchemeOptions<CryptoPP::DL_SS<CryptoPP::DL_Keys_ECDSA<CryptoPP::ECP>,
    CryptoPP::DL_Algorithm_ECDSA<CryptoPP::ECP>,
    CryptoPP::DL_SignatureMessageEncodingMethod_DSA, CryptoPP::SHA256,
    int>, CryptoPP::DL_Keys_ECDSA<CryptoPP::ECP>,
    CryptoPP::DL_Algorithm_ECDSA<CryptoPP::ECP>,
    CryptoPP::DL_SignatureMessageEncodingMethod_DSA,
    CryptoPP::SHA256>
    >::NewSignatureAccumulator(CryptoPP::RandomNumberGenerator&)
    const in libndn-cxx.a(sec-tpm-file.cpp.2.o)<br>
          CryptoPP::ClonableImpl<CryptoPP::SHA256,
    CryptoPP::AlgorithmImpl<CryptoPP::IteratedHash<unsigned int,
    CryptoPP::EnumToType<CryptoPP::ByteOrder, 1>, 64u,
    CryptoPP::HashTransformation>, CryptoPP::SHA256> >::Clone()
    const in libndn-cxx.a(sec-tpm-file.cpp.2.o)<br>
          CryptoPP::TF_ObjectImplBase<CryptoPP::TF_SignerBase,
    CryptoPP::TF_SignatureSchemeOptions<CryptoPP::TF_SS<CryptoPP::PKCS1v15,
    CryptoPP::SHA256, CryptoPP::RSA, int>, CryptoPP::RSA,
    CryptoPP::PKCS1v15_SignatureMessageEncodingMethod,
    CryptoPP::SHA256>,
    CryptoPP::InvertibleRSAFunction>::NewSignatureAccumulator(CryptoPP::RandomNumberGenerator&)
    const in libndn-cxx.a(sec-tpm-file.cpp.2.o)<br>
          ndn::ndn_digestSha256(unsigned char const*, unsigned long,
    unsigned char*) in libndn-cxx.a(crypto.cpp.2.o)<br>
          ndn::crypto::sha256(unsigned char const*, unsigned long) in
    libndn-cxx.a(crypto.cpp.2.o)<br>
          CryptoPP::ClonableImpl<CryptoPP::SHA256,
    CryptoPP::AlgorithmImpl<CryptoPP::IteratedHash<unsigned int,
    CryptoPP::EnumToType<CryptoPP::ByteOrder, 1>, 64u,
    CryptoPP::HashTransformation>, CryptoPP::SHA256> >::Clone()
    const in libndn-cxx.a(crypto.cpp.2.o)<br>
          ...<br>
      NOTE: a missing vtable usually means the first non-inline virtual
    member function has no definition.<br>
    ld: symbol(s) not found for architecture x86_64<br>
    clang: error: linker command failed with exit code 1 (use -v to see
    invocation)<br>
    <br>
    Undefined symbols for architecture x86_64:<br>
      "vtable for CryptoPP::SHA256", referenced from:<br>
         
    ndn::SecTpmFile::Impl::transformName(std::__1::basic_string<char,
    std::__1::char_traits<char>, std::__1::allocator<char>
    > const&, std::__1::basic_string<char,
    std::__1::char_traits<char>, std::__1::allocator<char>
    > const&) in libndn-cxx.a(sec-tpm-file.cpp.2.o)<br>
         
    CryptoPP::DL_SignerImpl<CryptoPP::DL_SignatureSchemeOptions<CryptoPP::DL_SS<CryptoPP::DL_Keys_ECDSA<CryptoPP::ECP>,
    CryptoPP::DL_Algorithm_ECDSA<CryptoPP::ECP>,
    CryptoPP::DL_SignatureMessageEncodingMethod_DSA, CryptoPP::SHA256,
    int>, CryptoPP::DL_Keys_ECDSA<CryptoPP::ECP>,
    CryptoPP::DL_Algorithm_ECDSA<CryptoPP::ECP>,
    CryptoPP::DL_SignatureMessageEncodingMethod_DSA,
    CryptoPP::SHA256>
    >::NewSignatureAccumulator(CryptoPP::RandomNumberGenerator&)
    const in libndn-cxx.a(sec-tpm-file.cpp.2.o)<br>
          CryptoPP::ClonableImpl<CryptoPP::SHA256,
    CryptoPP::AlgorithmImpl<CryptoPP::IteratedHash<unsigned int,
    CryptoPP::EnumToType<CryptoPP::ByteOrder, 1>, 64u,
    CryptoPP::HashTransformation>, CryptoPP::SHA256> >::Clone()
    const in libndn-cxx.a(sec-tpm-file.cpp.2.o)<br>
          CryptoPP::TF_ObjectImplBase<CryptoPP::TF_SignerBase,
    CryptoPP::TF_SignatureSchemeOptions<CryptoPP::TF_SS<CryptoPP::PKCS1v15,
    CryptoPP::SHA256, CryptoPP::RSA, int>, CryptoPP::RSA,
    CryptoPP::PKCS1v15_SignatureMessageEncodingMethod,
    CryptoPP::SHA256>,
    CryptoPP::InvertibleRSAFunction>::NewSignatureAccumulator(CryptoPP::RandomNumberGenerator&)
    const in libndn-cxx.a(sec-tpm-file.cpp.2.o)<br>
          ndn::ndn_digestSha256(unsigned char const*, unsigned long,
    unsigned char*) in libndn-cxx.a(crypto.cpp.2.o)<br>
          ndn::crypto::sha256(unsigned char const*, unsigned long) in
    libndn-cxx.a(crypto.cpp.2.o)<br>
          CryptoPP::ClonableImpl<CryptoPP::SHA256,
    CryptoPP::AlgorithmImpl<CryptoPP::IteratedHash<unsigned int,
    CryptoPP::EnumToType<CryptoPP::ByteOrder, 1>, 64u,
    CryptoPP::HashTransformation>, CryptoPP::SHA256> >::Clone()
    const in libndn-cxx.a(crypto.cpp.2.o)<br>
          ...<br>
      NOTE: a missing vtable usually means the first non-inline virtual
    member function has no definition.<br>
    ld: symbol(s) not found for architecture x86_64<br>
    clang: error: linker command failed with exit code 1 (use -v to see
    invocation)<br>
    <br>
    Undefined symbols for architecture x86_64:<br>
      "vtable for CryptoPP::SHA256", referenced from:<br>
          ndn::ndn_digestSha256(unsigned char const*, unsigned long,
    unsigned char*) in libndn-cxx.a(crypto.cpp.2.o)<br>
          ndn::crypto::sha256(unsigned char const*, unsigned long) in
    libndn-cxx.a(crypto.cpp.2.o)<br>
          CryptoPP::ClonableImpl<CryptoPP::SHA256,
    CryptoPP::AlgorithmImpl<CryptoPP::IteratedHash<unsigned int,
    CryptoPP::EnumToType<CryptoPP::ByteOrder, 1>, 64u,
    CryptoPP::HashTransformation>, CryptoPP::SHA256> >::Clone()
    const in libndn-cxx.a(crypto.cpp.2.o)<br>
         
    ndn::SecTpmFile::Impl::transformName(std::__1::basic_string<char,
    std::__1::char_traits<char>, std::__1::allocator<char>
    > const&, std::__1::basic_string<char,
    std::__1::char_traits<char>, std::__1::allocator<char>
    > const&) in libndn-cxx.a(sec-tpm-file.cpp.2.o)<br>
         
    CryptoPP::DL_SignerImpl<CryptoPP::DL_SignatureSchemeOptions<CryptoPP::DL_SS<CryptoPP::DL_Keys_ECDSA<CryptoPP::ECP>,
    CryptoPP::DL_Algorithm_ECDSA<CryptoPP::ECP>,
    CryptoPP::DL_SignatureMessageEncodingMethod_DSA, CryptoPP::SHA256,
    int>, CryptoPP::DL_Keys_ECDSA<CryptoPP::ECP>,
    CryptoPP::DL_Algorithm_ECDSA<CryptoPP::ECP>,
    CryptoPP::DL_SignatureMessageEncodingMethod_DSA,
    CryptoPP::SHA256>
    >::NewSignatureAccumulator(CryptoPP::RandomNumberGenerator&)
    const in libndn-cxx.a(sec-tpm-file.cpp.2.o)<br>
          CryptoPP::ClonableImpl<CryptoPP::SHA256,
    CryptoPP::AlgorithmImpl<CryptoPP::IteratedHash<unsigned int,
    CryptoPP::EnumToType<CryptoPP::ByteOrder, 1>, 64u,
    CryptoPP::HashTransformation>, CryptoPP::SHA256> >::Clone()
    const in libndn-cxx.a(sec-tpm-file.cpp.2.o)<br>
          CryptoPP::TF_ObjectImplBase<CryptoPP::TF_SignerBase,
    CryptoPP::TF_SignatureSchemeOptions<CryptoPP::TF_SS<CryptoPP::PKCS1v15,
    CryptoPP::SHA256, CryptoPP::RSA, int>, CryptoPP::RSA,
    CryptoPP::PKCS1v15_SignatureMessageEncodingMethod,
    CryptoPP::SHA256>,
    CryptoPP::InvertibleRSAFunction>::NewSignatureAccumulator(CryptoPP::RandomNumberGenerator&)
    const in libndn-cxx.a(sec-tpm-file.cpp.2.o)<br>
          ...<br>
      NOTE: a missing vtable usually means the first non-inline virtual
    member function has no definition.<br>
    ld: symbol(s) not found for architecture x86_64<br>
    clang: error: linker command failed with exit code 1 (use -v to see
    invocation)<br>
    <br>
    <span style="color: rgb(34, 34, 34); font-size: 0.9em;
      background-color: rgb(247, 247, 247);" class=""></span>
  </body>
</html>