Поэтому я пытался использовать C ++ Firebase API для хранения данных из моего приложения C ++ в облаке Google (firebase).Это моя цель.
Я написал необходимый код для него, основываясь на моем понимании с этого сайта: https://firebase.google.com/docs/database/cpp/start
и этого сайта: https://firebase.google.com/docs/cpp/setup
Эти веб-сайты дают вам некоторое представление о том, как вы можете добавить FirebaseAPI для моего приложения C ++.Заголовочные файлы или Firebase SDK взяты со второго сайта.
Поэтому я использую iMac и Visual Studio, и я попытался запустить свой код, но у меня появились следующие ошибки:
././include/firebase/./database/database_reference.h:107:25: warning: 'override' keyword is a C++11 extension [-Wc++11-extensions]
bool is_valid() const override;
^
1 warning generated.
Undefined symbols for architecture x86_64:
"firebase::App::Create(firebase::AppOptions const&)", referenced from:
_main in test-1dd10f.o
"firebase::Variant::Clear(firebase::Variant::Type)", referenced from:
firebase::Variant::set_int64_value(long long) in test-1dd10f.o
firebase::Variant::~Variant() in test-1dd10f.o
"firebase::database::DatabaseReference::SetValue(firebase::Variant)", referenced from:
_main in test-1dd10f.o
"firebase::database::DatabaseReference::~DatabaseReference()", referenced from:
_main in test-1dd10f.o
"firebase::database::Database::GetInstance(firebase::App*, firebase::InitResult*)", referenced from:
_main in test-1dd10f.o
"firebase::database::DatabaseReference::Child(char const*) const", referenced from:
_main in test-1dd10f.o
"firebase::database::Database::GetReference(char const*) const", referenced from:
_main in test-1dd10f.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Кстати, мне пришлось изменить некоторые пути некоторых заголовочных файлов, потому что каким-то образом, когда я компилирую файл, я получаю сообщение об ошибке «файл не найден».Я имею в виду, я полагаю, что я не собираюсь менять исходный путь от заголовочных файлов firebase или SDK до того, что мне нужно (возможно, я ошибаюсь).
Например, если у меня есть файл myapp.cpp
втот же каталог, что и папка firebase
, в которой находятся все заголовочные файлы, я могу просто добавить заголовочный файл app.h
, например, #include "firebase/app.h"
.Но некоторые из этих заголовочных файлов включают в себя другие заголовочные файлы, которые, как показано ниже «#include firebase / internal / common.h», вызвали у меня file not found error
.Поэтому мне пришлось изменить путь к этим заголовочным файлам на что-то вроде "#include" ../internal/common.h ". Не думаю, что это тоже проблема.
Не знаюЯ очень хорошо знаю C ++. Но я думаю, что это проблема среды, и я не знаю, что делать.
Я не выполнил шаги, связанные с Pod
(на веб-сайте), потому что не знаюзнать, если это необходимо, или я не понимаю инструкции ясно.
#include <iostream>
#include "./include/firebase/app.h"
#include "./include/firebase/database.h"
using namespace std;
using namespace firebase;
using namespace database;
int main () {
::firebase::AppOptions appOptions = ::firebase::AppOptions();
appOptions.set_api_key("AIzaSyDocIMJCv9ZfPq8ozvkeSc5PlC-X5gW5_k");
appOptions.set_app_id("smarttrafficmonitoring.firebaseapp.com");
appOptions.set_database_url("https://smarttrafficmonitoring.firebaseio.com");
appOptions.set_project_id("smarttrafficmonitoring");
appOptions.set_storage_bucket("smarttrafficmonitoring.appspot.com");
appOptions.set_messaging_sender_id("220108272524");
::firebase::App* app;
app = ::firebase::App::Create(appOptions);
::firebase::database::Database *database = ::firebase::database::Database::GetInstance(app);
firebase::database::DatabaseReference dbref = database->GetReference("intersections");
dbref.Child("intersection").Child("NSLane").Child("mid").SetValue(11);
cout << "It worked";
return 0;
}