C++ 使用folly的異步回調功能時出現的錯誤處理

錯誤1:

/tmp/ccEeAok8.o: In function `main':
follypromise.cpp:(.text+0x1c6): undefined reference to `folly::Future<folly::Unit>::~Future()'
follypromise.cpp:(.text+0x245): undefined reference to `folly::Future<int>::~Future()'
follypromise.cpp:(.text+0x264): undefined reference to `folly::Future<int>::~Future()'
/tmp/ccEeAok8.o: In function `folly::demangle(std::type_info const&)':
follypromise.cpp:(.text._ZN5folly8demangleERKSt9type_info[_ZN5folly8demangleERKSt9type_info]+0x2a): undefined reference to `folly::demangle(char const*)'
/tmp/ccEeAok8.o: In function `folly::MicroSpinLock::lock()':
follypromise.cpp:(.text._ZN5folly13MicroSpinLock4lockEv[_ZN5folly13MicroSpinLock4lockEv]+0xd1): undefined reference to `google::LogMessageFatal::LogMessageFatal(char const*, int)'
follypromise.cpp:(.text._ZN5folly13MicroSpinLock4lockEv[_ZN5folly13MicroSpinLock4lockEv]+0xe2): undefined reference to `google::LogMessage::stream()'
follypromise.cpp:(.text._ZN5folly13MicroSpinLock4lockEv[_ZN5folly13MicroSpinLock4lockEv]+0x127): undefined reference to `google::LogMessageFatal::~LogMessageFatal()'
follypromise.cpp:(.text._ZN5folly13MicroSpinLock4lockEv[_ZN5folly13MicroSpinLock4lockEv]+0x13b): undefined reference to `google::LogMessageFatal::~LogMessageFatal()'
/tmp/ccEeAok8.o: In function `folly::MicroSpinLock::unlock()':
follypromise.cpp:(.text._ZN5folly13MicroSpinLock6unlockEv[_ZN5folly13MicroSpinLock6unlockEv]+0x6b): undefined reference to `google::LogMessageFatal::LogMessageFatal(charconst*, int)'
follypromise.cpp:(.text._ZN5folly13MicroSpinLock6unlockEv[_ZN5folly13MicroSpinLock6unlockEv]+0x7c): undefined reference to `google::LogMessage::stream()'
follypromise.cpp:(.text._ZN5folly13MicroSpinLock6unlockEv[_ZN5folly13MicroSpinLock6unlockEv]+0xc1): undefined reference to `google::LogMessageFatal::~LogMessageFatal()'
follypromise.cpp:(.text._ZN5folly13MicroSpinLock6unlockEv[_ZN5folly13MicroSpinLock6unlockEv]+0x112): undefined reference to `google::LogMessageFatal::~LogMessageFatal()'
/tmp/ccEeAok8.o: In function `folly::RequestContext::saveContext()':
follypromise.cpp:(.text._ZN5folly14RequestContext11saveContextEv[_ZN5folly14RequestContext11saveContextEv]+0xd): undefined reference to `folly::RequestContext::getStaticContext()'
/tmp/ccEeAok8.o: In function `folly::RequestContextScopeGuard::RequestContextScopeGuard(std::shared_ptr<folly::RequestContext>)':
follypromise.cpp:(.text._ZN5folly24RequestContextScopeGuardC2ESt10shared_ptrINS_14RequestContextEE[_ZN5folly24RequestContextScopeGuardC5ESt10shared_ptrINS_14RequestContextEE]+0x3e): undefined reference to `folly::RequestContext::setContext(std::shared_ptr<folly::RequestContext>)'
/tmp/ccEeAok8.o: In function `folly::RequestContextScopeGuard::~RequestContextScopeGuard()':
follypromise.cpp:(.text._ZN5folly24RequestContextScopeGuardD2Ev[_ZN5folly24RequestContextScopeGuardD5Ev]+0x39): undefined reference to `folly::RequestContext::setContext(std::shared_ptr<folly::RequestContext>)'
/tmp/ccEeAok8.o: In function `folly::Promise<int>::getFuture()':
follypromise.cpp:(.text._ZN5folly7PromiseIiE9getFutureEv[_ZN5folly7PromiseIiE9getFutureEv]+0x36): undefined reference to `folly::Future<int>::Future(folly::detail::Core<int>*)'
/tmp/ccEeAok8.o: In function `_ZN5folly6FutureIiE18thenImplementationIPFviENS_6detail14callableResultIiS4_EELb0EJOiEEENSt9enable_ifIXntsrNT0_13ReturnsFutureE5valueENSA_6ReturnEE4typeEOT_NS5_9argResultIXT1_ESF_JDpT2_EEE':
follypromise.cpp:(.text._ZN5folly6FutureIiE18thenImplementationIPFviENS_6detail14callableResultIiS4_EELb0EIOiEEENSt9enable_ifIXntsrNT0_13ReturnsFutureE5valueENSA_6ReturnEE4typeEOT_NS5_9argResultIXT1_ESF_IDpT2_EEE[_ZN5folly6FutureIiE18thenImplementationIPFviENS_6detail14callableResultIiS4_EELb0EIOiEEENSt9enable_ifIXntsrNT0_13ReturnsFutureE5valueENSA_6ReturnEE4typeEOT_NS5_9argResultIXT1_ESF_IDpT2_EEE]+0x1d): undefined reference to `folly::Future<int>::throwIfInvalid() const'
follypromise.cpp:(.text._ZN5folly6FutureIiE18thenImplementationIPFviENS_6detail14callableResultIiS4_EELb0EIOiEEENSt9enable_ifIXntsrNT0_13ReturnsFutureE5valueENSA_6ReturnEE4typeEOT_NS5_9argResultIXT1_ESF_IDpT2_EEE[_ZN5folly6FutureIiE18thenImplementationIPFviENS_6detail14callableResultIiS4_EELb0EIOiEEENSt9enable_ifIXntsrNT0_13ReturnsFutureE5valueENSA_6ReturnEE4typeEOT_NS5_9argResultIXT1_ESF_IDpT2_EEE]+0x7d): undefined reference to `folly::Future<int>::getExecutor()'
follypromise.cpp:(.text._ZN5folly6FutureIiE18thenImplementationIPFviENS_6detail14callableResultIiS4_EELb0EIOiEEENSt9enable_ifIXntsrNT0_13ReturnsFutureE5valueENSA_6ReturnEE4typeEOT_NS5_9argResultIXT1_ESF_IDpT2_EEE[_ZN5folly6FutureIiE18thenImplementationIPFviENS_6detail14callableResultIiS4_EELb0EIOiEEENSt9enable_ifIXntsrNT0_13ReturnsFutureE5valueENSA_6ReturnEE4typeEOT_NS5_9argResultIXT1_ESF_IDpT2_EEE]+0x12b): undefined reference to `folly::Future<folly::Unit>::~Future()'
/tmp/ccEeAok8.o: In function `folly::Promise<folly::Unit>::getFuture()':
follypromise.cpp:(.text._ZN5folly7PromiseINS_4UnitEE9getFutureEv[_ZN5folly7PromiseINS_4UnitEE9getFutureEv]+0x36): undefined reference to `folly::Future<folly::Unit>::Future(folly::detail::Core<folly::Unit>*)'
/tmp/ccEeAok8.o: In function `_ZN5folly6FutureIiE12setCallback_IZNS1_18thenImplementationIPFviENS_6detail14callableResultIiS5_EELb0EJOiEEENSt9enable_ifIXntsrNT0_13ReturnsFutureE5valueENSB_6ReturnEE4typeEOT_NS6_9argResultIXT1_ESG_JDpT2_EEEEUlONS_3TryIiEEE_EEvSH_':
follypromise.cpp:(.text._ZN5folly6FutureIiE12setCallback_IZNS1_18thenImplementationIPFviENS_6detail14callableResultIiS5_EELb0EIOiEEENSt9enable_ifIXntsrNT0_13ReturnsFutureE5valueENSB_6ReturnEE4typeEOT_NS6_9argResultIXT1_ESG_IDpT2_EEEEUlONS_3TryIiEEE_EEvSH_[_ZN5folly6FutureIiE12setCallback_IZNS1_18thenImplementationIPFviENS_6detail14callableResultIiS5_EELb0EIOiEEENSt9enable_ifIXntsrNT0_13ReturnsFutureE5valueENSB_6ReturnEE4typeEOT_NS6_9argResultIXT1_ESG_IDpT2_EEEEUlONS_3TryIiEEE_EEvSH_]+0x18): undefined reference to `folly::Future<int>::throwIfInvalid() const'
/tmp/ccEeAok8.o: In function `folly::detail::Core<int>::~Core()':
follypromise.cpp:(.text._ZN5folly6detail4CoreIiED2Ev[_ZN5folly6detail4CoreIiED5Ev]+0x4b): undefined reference to `google::LogMessageFatal::LogMessageFatal(char const*, int)'
follypromise.cpp:(.text._ZN5folly6detail4CoreIiED2Ev[_ZN5folly6detail4CoreIiED5Ev]+0x5c): undefined reference to `google::LogMessage::stream()'
follypromise.cpp:(.text._ZN5folly6detail4CoreIiED2Ev[_ZN5folly6detail4CoreIiED5Ev]+0xa1): undefined reference to `google::LogMessageFatal::~LogMessageFatal()'
/tmp/ccEeAok8.o: In function `folly::detail::Core<int>::CountedReference::CountedReference(folly::detail::Core<int>*)':
follypromise.cpp:(.text._ZN5folly6detail4CoreIiE16CountedReferenceC2EPS2_[_ZN5folly6detail4CoreIiE16CountedReferenceC5EPS2_]+0x4f): undefined reference to `google::LogMessageFatal::LogMessageFatal(char const*, int)'
follypromise.cpp:(.text._ZN5folly6detail4CoreIiE16CountedReferenceC2EPS2_[_ZN5folly6detail4CoreIiE16CountedReferenceC5EPS2_]+0x60): undefined reference to `google::LogMessage::stream()'
follypromise.cpp:(.text._ZN5folly6detail4CoreIiE16CountedReferenceC2EPS2_[_ZN5folly6detail4CoreIiE16CountedReferenceC5EPS2_]+0xa5): undefined reference to `google::LogMessageFatal::~LogMessageFatal()'
/tmp/ccEeAok8.o: In function `folly::detail::Core<folly::Unit>::~Core()':
follypromise.cpp:(.text._ZN5folly6detail4CoreINS_4UnitEED2Ev[_ZN5folly6detail4CoreINS_4UnitEED5Ev]+0x4b): undefined reference to `google::LogMessageFatal::LogMessageFatal(char const*, int)'
follypromise.cpp:(.text._ZN5folly6detail4CoreINS_4UnitEED2Ev[_ZN5folly6detail4CoreINS_4UnitEED5Ev]+0x5c): undefined reference to `google::LogMessage::stream()'
follypromise.cpp:(.text._ZN5folly6detail4CoreINS_4UnitEED2Ev[_ZN5folly6detail4CoreINS_4UnitEED5Ev]+0xa1): undefined reference to `google::LogMessageFatal::~LogMessageFatal()'
/tmp/ccEeAok8.o: In function `folly::detail::Core<folly::Unit>::CountedReference::CountedReference(folly::detail::Core<folly::Unit>*)':
follypromise.cpp:(.text._ZN5folly6detail4CoreINS_4UnitEE16CountedReferenceC2EPS3_[_ZN5folly6detail4CoreINS_4UnitEE16CountedReferenceC5EPS3_]+0x4f): undefined reference to `google::LogMessageFatal::LogMessageFatal(char const*, int)'
follypromise.cpp:(.text._ZN5folly6detail4CoreINS_4UnitEE16CountedReferenceC2EPS3_[_ZN5folly6detail4CoreINS_4UnitEE16CountedReferenceC5EPS3_]+0x60): undefined reference to `google::LogMessage::stream()'
follypromise.cpp:(.text._ZN5folly6detail4CoreINS_4UnitEE16CountedReferenceC2EPS3_[_ZN5folly6detail4CoreINS_4UnitEE16CountedReferenceC5EPS3_]+0xa5): undefined reference to `google::LogMessageFatal::~LogMessageFatal()'
collect2: 錯誤:ld 返回 1
解決辦法:編譯的時候加上 -std=c++1y

 

錯誤2:

/tmp/cc6gFfIq.o: In function `main':
follypromise.cpp:(.text+0x1c6): undefined reference to `folly::Future<folly::Unit>::~Future()'
follypromise.cpp:(.text+0x245): undefined reference to `folly::Future<int>::~Future()'
follypromise.cpp:(.text+0x264): undefined reference to `folly::Future<int>::~Future()'
/tmp/cc6gFfIq.o: In function `folly::demangle(std::type_info const&)':
follypromise.cpp:(.text._ZN5folly8demangleERKSt9type_info[_ZN5folly8demangleERKSt9type_info]+0x2a): undefined reference to `folly::demangle(char const*)'
/tmp/cc6gFfIq.o: In function `folly::MicroSpinLock::lock()':
follypromise.cpp:(.text._ZN5folly13MicroSpinLock4lockEv[_ZN5folly13MicroSpinLock4lockEv]+0xd1): undefined reference to `google::LogMessageFatal::LogMessageFatal(char const*, int)'
follypromise.cpp:(.text._ZN5folly13MicroSpinLock4lockEv[_ZN5folly13MicroSpinLock4lockEv]+0xe2): undefined reference to `google::LogMessage::stream()'
follypromise.cpp:(.text._ZN5folly13MicroSpinLock4lockEv[_ZN5folly13MicroSpinLock4lockEv]+0x127): undefined reference to `google::LogMessageFatal::~LogMessageFatal()'
follypromise.cpp:(.text._ZN5folly13MicroSpinLock4lockEv[_ZN5folly13MicroSpinLock4lockEv]+0x13b): undefined reference to `google::LogMessageFatal::~LogMessageFatal()'
/tmp/cc6gFfIq.o: In function `folly::MicroSpinLock::unlock()':
follypromise.cpp:(.text._ZN5folly13MicroSpinLock6unlockEv[_ZN5folly13MicroSpinLock6unlockEv]+0x6b): undefined reference to `google::LogMessageFatal::LogMessageFatal(charconst*, int)'
follypromise.cpp:(.text._ZN5folly13MicroSpinLock6unlockEv[_ZN5folly13MicroSpinLock6unlockEv]+0x7c): undefined reference to `google::LogMessage::stream()'
follypromise.cpp:(.text._ZN5folly13MicroSpinLock6unlockEv[_ZN5folly13MicroSpinLock6unlockEv]+0xc1): undefined reference to `google::LogMessageFatal::~LogMessageFatal()'
follypromise.cpp:(.text._ZN5folly13MicroSpinLock6unlockEv[_ZN5folly13MicroSpinLock6unlockEv]+0x112): undefined reference to `google::LogMessageFatal::~LogMessageFatal()'
/tmp/cc6gFfIq.o: In function `folly::RequestContext::saveContext()':
follypromise.cpp:(.text._ZN5folly14RequestContext11saveContextEv[_ZN5folly14RequestContext11saveContextEv]+0xd): undefined reference to `folly::RequestContext::getStaticContext()'
/tmp/cc6gFfIq.o: In function `folly::RequestContextScopeGuard::RequestContextScopeGuard(std::shared_ptr<folly::RequestContext>)':
follypromise.cpp:(.text._ZN5folly24RequestContextScopeGuardC2ESt10shared_ptrINS_14RequestContextEE[_ZN5folly24RequestContextScopeGuardC5ESt10shared_ptrINS_14RequestContextEE]+0x3e): undefined reference to `folly::RequestContext::setContext(std::shared_ptr<folly::RequestContext>)'
/tmp/cc6gFfIq.o: In function `folly::RequestContextScopeGuard::~RequestContextScopeGuard()':
follypromise.cpp:(.text._ZN5folly24RequestContextScopeGuardD2Ev[_ZN5folly24RequestContextScopeGuardD5Ev]+0x39): undefined reference to `folly::RequestContext::setContext(std::shared_ptr<folly::RequestContext>)'
/tmp/cc6gFfIq.o: In function `folly::Promise<int>::getFuture()':
follypromise.cpp:(.text._ZN5folly7PromiseIiE9getFutureEv[_ZN5folly7PromiseIiE9getFutureEv]+0x36): undefined reference to `folly::Future<int>::Future(folly::detail::Core<int>*)'
/tmp/cc6gFfIq.o: In function `_ZN5folly6FutureIiE18thenImplementationIPFviENS_6detail14callableResultIiS4_EELb0EJOiEEENSt9enable_ifIXntsrNT0_13ReturnsFutureE5valueENSA_6ReturnEE4typeEOT_NS5_9argResultIXT1_ESF_JDpT2_EEE':
follypromise.cpp:(.text._ZN5folly6FutureIiE18thenImplementationIPFviENS_6detail14callableResultIiS4_EELb0EIOiEEENSt9enable_ifIXntsrNT0_13ReturnsFutureE5valueENSA_6ReturnEE4typeEOT_NS5_9argResultIXT1_ESF_IDpT2_EEE[_ZN5folly6FutureIiE18thenImplementationIPFviENS_6detail14callableResultIiS4_EELb0EIOiEEENSt9enable_ifIXntsrNT0_13ReturnsFutureE5valueENSA_6ReturnEE4typeEOT_NS5_9argResultIXT1_ESF_IDpT2_EEE]+0x1d): undefined reference to `folly::Future<int>::throwIfInvalid() const'
follypromise.cpp:(.text._ZN5folly6FutureIiE18thenImplementationIPFviENS_6detail14callableResultIiS4_EELb0EIOiEEENSt9enable_ifIXntsrNT0_13ReturnsFutureE5valueENSA_6ReturnEE4typeEOT_NS5_9argResultIXT1_ESF_IDpT2_EEE[_ZN5folly6FutureIiE18thenImplementationIPFviENS_6detail14callableResultIiS4_EELb0EIOiEEENSt9enable_ifIXntsrNT0_13ReturnsFutureE5valueENSA_6ReturnEE4typeEOT_NS5_9argResultIXT1_ESF_IDpT2_EEE]+0x7d): undefined reference to `folly::Future<int>::getExecutor()'
follypromise.cpp:(.text._ZN5folly6FutureIiE18thenImplementationIPFviENS_6detail14callableResultIiS4_EELb0EIOiEEENSt9enable_ifIXntsrNT0_13ReturnsFutureE5valueENSA_6ReturnEE4typeEOT_NS5_9argResultIXT1_ESF_IDpT2_EEE[_ZN5folly6FutureIiE18thenImplementationIPFviENS_6detail14callableResultIiS4_EELb0EIOiEEENSt9enable_ifIXntsrNT0_13ReturnsFutureE5valueENSA_6ReturnEE4typeEOT_NS5_9argResultIXT1_ESF_IDpT2_EEE]+0x12b): undefined reference to `folly::Future<folly::Unit>::~Future()'
/tmp/cc6gFfIq.o: In function `folly::Promise<folly::Unit>::getFuture()':
follypromise.cpp:(.text._ZN5folly7PromiseINS_4UnitEE9getFutureEv[_ZN5folly7PromiseINS_4UnitEE9getFutureEv]+0x36): undefined reference to `folly::Future<folly::Unit>::Future(folly::detail::Core<folly::Unit>*)'
/tmp/cc6gFfIq.o: In function `_ZN5folly6FutureIiE12setCallback_IZNS1_18thenImplementationIPFviENS_6detail14callableResultIiS5_EELb0EJOiEEENSt9enable_ifIXntsrNT0_13ReturnsFutureE5valueENSB_6ReturnEE4typeEOT_NS6_9argResultIXT1_ESG_JDpT2_EEEEUlONS_3TryIiEEE_EEvSH_':
follypromise.cpp:(.text._ZN5folly6FutureIiE12setCallback_IZNS1_18thenImplementationIPFviENS_6detail14callableResultIiS5_EELb0EIOiEEENSt9enable_ifIXntsrNT0_13ReturnsFutureE5valueENSB_6ReturnEE4typeEOT_NS6_9argResultIXT1_ESG_IDpT2_EEEEUlONS_3TryIiEEE_EEvSH_[_ZN5folly6FutureIiE12setCallback_IZNS1_18thenImplementationIPFviENS_6detail14callableResultIiS5_EELb0EIOiEEENSt9enable_ifIXntsrNT0_13ReturnsFutureE5valueENSB_6ReturnEE4typeEOT_NS6_9argResultIXT1_ESG_IDpT2_EEEEUlONS_3TryIiEEE_EEvSH_]+0x18): undefined reference to `folly::Future<int>::throwIfInvalid() const'
/tmp/cc6gFfIq.o: In function `folly::detail::Core<int>::~Core()':
follypromise.cpp:(.text._ZN5folly6detail4CoreIiED2Ev[_ZN5folly6detail4CoreIiED5Ev]+0x4b): undefined reference to `google::LogMessageFatal::LogMessageFatal(char const*, int)'
follypromise.cpp:(.text._ZN5folly6detail4CoreIiED2Ev[_ZN5folly6detail4CoreIiED5Ev]+0x5c): undefined reference to `google::LogMessage::stream()'
follypromise.cpp:(.text._ZN5folly6detail4CoreIiED2Ev[_ZN5folly6detail4CoreIiED5Ev]+0xa1): undefined reference to `google::LogMessageFatal::~LogMessageFatal()'
/tmp/cc6gFfIq.o: In function `folly::detail::Core<int>::CountedReference::CountedReference(folly::detail::Core<int>*)':
follypromise.cpp:(.text._ZN5folly6detail4CoreIiE16CountedReferenceC2EPS2_[_ZN5folly6detail4CoreIiE16CountedReferenceC5EPS2_]+0x4f): undefined reference to `google::LogMessageFatal::LogMessageFatal(char const*, int)'
follypromise.cpp:(.text._ZN5folly6detail4CoreIiE16CountedReferenceC2EPS2_[_ZN5folly6detail4CoreIiE16CountedReferenceC5EPS2_]+0x60): undefined reference to `google::LogMessage::stream()'
follypromise.cpp:(.text._ZN5folly6detail4CoreIiE16CountedReferenceC2EPS2_[_ZN5folly6detail4CoreIiE16CountedReferenceC5EPS2_]+0xa5): undefined reference to `google::LogMessageFatal::~LogMessageFatal()'
/tmp/cc6gFfIq.o: In function `folly::detail::Core<folly::Unit>::~Core()':
follypromise.cpp:(.text._ZN5folly6detail4CoreINS_4UnitEED2Ev[_ZN5folly6detail4CoreINS_4UnitEED5Ev]+0x4b): undefined reference to `google::LogMessageFatal::LogMessageFatal(char const*, int)'
follypromise.cpp:(.text._ZN5folly6detail4CoreINS_4UnitEED2Ev[_ZN5folly6detail4CoreINS_4UnitEED5Ev]+0x5c): undefined reference to `google::LogMessage::stream()'
follypromise.cpp:(.text._ZN5folly6detail4CoreINS_4UnitEED2Ev[_ZN5folly6detail4CoreINS_4UnitEED5Ev]+0xa1): undefined reference to `google::LogMessageFatal::~LogMessageFatal()'
/tmp/cc6gFfIq.o: In function `folly::detail::Core<folly::Unit>::CountedReference::CountedReference(folly::detail::Core<folly::Unit>*)':
follypromise.cpp:(.text._ZN5folly6detail4CoreINS_4UnitEE16CountedReferenceC2EPS3_[_ZN5folly6detail4CoreINS_4UnitEE16CountedReferenceC5EPS3_]+0x4f): undefined reference to `google::LogMessageFatal::LogMessageFatal(char const*, int)'
follypromise.cpp:(.text._ZN5folly6detail4CoreINS_4UnitEE16CountedReferenceC2EPS3_[_ZN5folly6detail4CoreINS_4UnitEE16CountedReferenceC5EPS3_]+0x60): undefined reference to `google::LogMessage::stream()'
follypromise.cpp:(.text._ZN5folly6detail4CoreINS_4UnitEE16CountedReferenceC2EPS3_[_ZN5folly6detail4CoreINS_4UnitEE16CountedReferenceC5EPS3_]+0xa5): undefined reference to `google::LogMessageFatal::~LogMessageFatal()'
collect2: 錯誤:ld 返回 1

編譯的時候加上:-lfolly

整個程序://功能:處理異步回調功能

#include <folly/futures/Future.h>
#include <iostream>
using namespace folly;
using namespace std;

void foo(int x) {
  // do something with x
  cout << "foo(" << x << ")" << endl;
}

// ...
int main() {
  cout << "making Promise" << endl;
  Promise<int> p;
  Future<int> f = p.getFuture();
  f.then(foo);
  cout << "Future chain made" << endl;

// ... now perhaps in another event callback

  cout << "fulfilling Promise" << endl;
  p.setValue(42);
  cout << "Promise fulfilled" << endl;
  return 0;
}
 

編譯命令:g++ --std=c++11 -std=c++1y -lfolly follypromise.cpp

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章