firebase/quickstart-cpp

Updating Firebase to latest throws `undefined reference`

RameshRavone opened this issue · 4 comments

NDK Version: r17b
Firebase SDK: 5.2.0

Error message:

/tmpfs/src/gfile/kokoro_invitesandroid/firebase/invites/client/cpp/src/common/invites.cc:131: error: undefined reference to 'firebase::invites::internal::InvitesReceiverInternal::CreateInstance(firebase::App const&, firebase::invites::internal::ReceiverInterface*)'
/tmpfs/src/gfile/kokoro_invitesandroid/firebase/invites/client/cpp/src/common/invites.cc:52: error: undefined reference to 'firebase::invites::internal::CachedReceiver::CachedReceiver()'
/tmpfs/src/gfile/kokoro_invitesandroid/firebase/invites/client/cpp/src/common/invites.cc:177: error: undefined reference to 'firebase::invites::internal::InvitesReceiverInternal::DestroyInstance(firebase::invites::internal::InvitesReceiverInternal*, firebase::invites::internal::ReceiverInterface*)'
/tmpfs/src/gfile/kokoro_invitesandroid/firebase/invites/client/cpp/src/common/invites.cc:301: error: undefined reference to 'firebase::invites::internal::InvitesReceiverInternal::Fetch()'
/tmpfs/src/gfile/kokoro_invitesandroid/firebase/invites/client/cpp/src/common/invites.cc:62: error: undefined reference to 'firebase::invites::internal::CachedReceiver::SetReceiver(firebase::invites::internal::ReceiverInterface*)'
/tmpfs/src/gfile/kokoro_invitesandroid/firebase/invites/client/cpp/src/common/invites.cc:290: error: undefined reference to 'firebase::invites::internal::InvitesReceiverInternal::ConvertInvitation(char const*)'
/tmpfs/src/gfile/kokoro_invitesandroid/firebase/invites/client/cpp/src/common/invites.cc:295: error: undefined reference to 'firebase::invites::internal::InvitesReceiverInternal::ConvertInvitationLastResult()'
/tmpfs/src/gfile/kokoro_invitesandroid/firebase/invites/client/cpp/src/common/invites.cc:53: error: undefined reference to 'firebase::invites::internal::CachedReceiver::~CachedReceiver()'
/tmpfs/src/gfile/kokoro_invitesandroid/firebase/invites/client/cpp/src/common/invites.cc:53: error: undefined reference to 'firebase::invites::internal::CachedReceiver::~CachedReceiver()'
/tmpfs/src/gfile/kokoro_invitesandroid/firebase/invites/client/cpp/src/common/invites.cc:92: error: undefined reference to 'firebase::invites::internal::CachedReceiver::ReceivedInviteCallback(std::__ndk1::basic_string<char, std::__ndk1::char_traits<char>, std::__ndk1::allocator<char> > const&, std::__ndk1::basic_string<char, std::__ndk1::char_traits<char>, std::__ndk1::allocator<char> > const&, firebase::invites::internal::InternalLinkMatchStrength, int, std::__ndk1::basic_string<char, std::__ndk1::char_traits<char>, std::__ndk1::allocator<char> > const&)'
/tmpfs/src/gfile/kokoro_invitesandroid/firebase/invites/client/cpp/src/android/invites_sender_internal_android.cc:39: error: undefined reference to 'firebase::invites::internal::AndroidHelper::AndroidHelper(firebase::App const&, firebase::invites::internal::SenderReceiverInterface*)'
/tmpfs/src/gfile/kokoro_invitesandroid/firebase/invites/client/cpp/src/android/invites_sender_internal_android.cc:44: error: undefined reference to 'firebase::invites::internal::AndroidHelper::CallMethod(firebase::invites::internal::invite::Method)'
/tmpfs/src/gfile/kokoro_invitesandroid/firebase/invites/client/cpp/src/android/invites_sender_internal_android.cc:46: error: undefined reference to 'firebase::invites::internal::AndroidHelper::CallMethodStringString(firebase::invites::internal::invite::Method, char const*, char const*)'
/tmpfs/src/gfile/kokoro_invitesandroid/firebase/invites/client/cpp/src/android/invites_sender_internal_android.cc:51: error: undefined reference to 'firebase::invites::internal::AndroidHelper::CallMethod(firebase::invites::internal::invite::Method)'
/tmpfs/src/gfile/kokoro_invitesandroid/firebase/invites/client/cpp/src/android/invites_sender_internal_android.cc:54: error: undefined reference to 'firebase::invites::internal::AndroidHelper::CallMethodStringString(firebase::invites::internal::invite::Method, char const*, char const*)'
/tmpfs/src/gfile/kokoro_invitesandroid/firebase/invites/client/cpp/src/android/invites_sender_internal_android.cc:58: error: undefined reference to 'firebase::invites::internal::AndroidHelper::CallBooleanMethod(firebase::invites::internal::invite::Method)'
/tmpfs/src/gfile/kokoro_invitesandroid/firebase/invites/client/cpp/src/android/invites_sender_internal_android.h:20: error: undefined reference to 'firebase::invites::internal::AndroidHelper::~AndroidHelper()'
/tmpfs/src/gfile/kokoro_invitesandroid/firebase/invites/client/cpp/src/android/invites_sender_internal_android.h:20: error: undefined reference to 'firebase::invites::internal::AndroidHelper::~AndroidHelper()'

What code are you calling that's triggering the exception? Can you create a minimal, complete, verifiable example?

I get exactly the same error. With last SDK 5.3.1

I get this message

/tmpfs/src/gfile/kokoro_dynamic_linksandroid/firebase/dynamic_links/client/cpp/src/common.cc:106: error: undefined reference to 'firebase::invites::internal::InvitesReceiverInternal::CreateInstance(firebase::App const&, firebase::invites::internal::ReceiverInterface*)'
/tmpfs/src/gfile/kokoro_dynamic_linksandroid/firebase/dynamic_links/client/cpp/src/common.cc:38: error: undefined reference to 'firebase::invites::internal::CachedReceiver::CachedReceiver()'
/tmpfs/src/gfile/kokoro_dynamic_linksandroid/firebase/dynamic_links/client/cpp/src/common.cc:138: error: undefined reference to 'firebase::invites::internal::InvitesReceiverInternal::DestroyInstance(firebase::invites::internal::InvitesReceiverInternal*, firebase::invites::internal::ReceiverInterface*)'
/tmpfs/src/gfile/kokoro_dynamic_linksandroid/firebase/dynamic_links/client/cpp/src/common.cc:156: error: undefined reference to 'firebase::invites::internal::InvitesReceiverInternal::Fetch()'
/tmpfs/src/gfile/kokoro_dynamic_linksandroid/firebase/dynamic_links/client/cpp/src/common.cc:156: error: undefined reference to 'firebase::invites::internal::InvitesReceiverInternal::Fetch()'
/tmpfs/src/gfile/kokoro_dynamic_linksandroid/firebase/dynamic_links/client/cpp/src/common.cc:47: error: undefined reference to 'firebase::invites::internal::CachedReceiver::SetReceiver(firebase::invites::internal::ReceiverInterface*)'
/tmpfs/src/gfile/kokoro_dynamic_linksandroid/firebase/dynamic_links/client/cpp/src/common.cc:39: error: undefined reference to 'firebase::invites::internal::CachedReceiver::~CachedReceiver()'
/tmpfs/src/gfile/kokoro_dynamic_linksandroid/firebase/dynamic_links/client/cpp/src/common.cc:39: error: undefined reference to 'firebase::invites::internal::CachedReceiver::~CachedReceiver()'
/tmpfs/src/gfile/kokoro_dynamic_linksandroid/firebase/dynamic_links/client/cpp/src/common.cc:68: error: undefined reference to 'firebase::invites::internal::CachedReceiver::ReceivedInviteCallback(std::string const&, std::string const&, firebase::invites::internal::InternalLinkMatchStrength, int, std::string const&)'

Here is my link line

-LC:/Qt/firebase_cpp_sdk/libs/android/armeabi-v7a/gnustl -lfirebase_app -lfirebase_messaging -lfirebase_invites -lfirebase_dynamic_links

Without -lfirebase_invites -lfirebase_dynamic_links it works fine

By the way, I don't need invites, I only need dynamic_links, but I added it, because I got this same error message with only dynamic_links

Link order matters in this case:

This solved it for me

-L$$PWD/firebase/libs/android/armeabi-v7a/gnustl \
    -lfirebase_analytics \
    -lfirebase_messaging \
    -lfirebase_invites \
    -lfirebase_dynamic_links \
    -lfirebase_app