1408012025-hd-How Many Tables.cpp

/*做题思路:
        需要用到数据结构-----并查集
         

  • Find:确定元素属于哪一个子集。它可以被用来确定两个元素是否属于同一子集。
  • Union:将两个子集合并成同一个集合。

 

*/
#include<stdio.h>
int relation[1100];   //定义关系数组
int find(int a)      //查找关系
{
 if(relation[a]==a)
     return a;     //没有其他关系的话,就返回自己
 else
     return (relation[a]=find(relation[a]));
     //有关系的话,通过递归,找到最外围的那个人
}


void unite(int i,int j)
{
 int x,y;
 x=find(i);     //找到 x的关系圈
 y=find(j);     //找到 y的关系圈
 relation[x]=y;   //建立关系圈
}
int main()
{
 int t;
 int n,m;
 int i,sum;
 int a,b;
 scanf("%d",&t);
 while(t--)
 {
  scanf("%d%d",&n,&m);   //输入人数和关系
  for(i=1;i<=n;i++)
      relation[i]=i;   //没有找到关系之前,先定义自己跟自己有关系 


  for(i=0;i<m;i++)
  {
   scanf("%d%d",&a,&b);    //输入关系,
   unite(a,b);          //进行关系联系
  }
  sum=0;
  for(i=1;i<=n;i++)
      if(relation[i]==i)
       sum++;
  printf("%d\n",sum);
 }
 return 0;
}

error Failed to install the app. Command failed with exit code 1: ./gradlew app:installDebug -PreactNativeDevServerPort=8081 No modules to process in combine-js-to-schema-cli. If this is unexpected, please check if you set up your NativeComponent correctly. See combine-js-to-schema.js for how codegen finds modules. No modules to process in combine-js-to-schema-cli. If this is unexpected, please check if you set up your NativeComponent correctly. See combine-js-to-schema.js for how codegen finds modules. 注: 某些输入文件使用或覆盖了已过时的 API。 注: 有关详细信息, 请使用 -Xlint:deprecation 重新编译。 注: 某些输入文件使用或覆盖了已过时的 API。 注: 有关详细信息, 请使用 -Xlint:deprecation 重新编译。 注: 某些输入文件使用了未经检查或不安全的操作。 注: 有关详细信息, 请使用 -Xlint:unchecked 重新编译。 注: 某些输入文件使用或覆盖了已过时的 API。 注: 有关详细信息, 请使用 -Xlint:deprecation 重新编译。 注: 某些输入文件使用或覆盖了已过时的 API。 注: 有关详细信息, 请使用 -Xlint:deprecation 重新编译。 注: 某些输入文件使用了未经检查或不安全的操作。 注: 有关详细信息, 请使用 -Xlint:unchecked 重新编译。 FAILURE: Build failed with an exception. * What went wrong: Execution failed for task ':react-native-worklets-core:buildCMakeDebug[x86_64]'. > com.android.ide.common.process.ProcessException: ninja: Entering directory `/Users/r/example/node_modules/react-native-worklets-core/android/.cxx/Debug/625a6672/x86_64' [0/2] Re-checking globbed directories... [1/9] Building CXX object CMakeFiles/rnworklets.dir/Users/r/example/node_modules/react-native-worklets-core/cpp/dispatch/WKTDispatchQueue.cpp.o [2/9] Building CXX object CMakeFiles/rnworklets.dir/Users/r/example/node_modules/react-native-worklets-core/cpp/base/WKTRuntimeLifecycleMonitor.cpp.o [3/9] Building CXX object CMakeFiles/rnworklets.dir/Users/r/example/node_modules/react-native-worklets-core/cpp/base/WKTJsiHostObject.cpp.o [4/9] Building CXX object CMakeFiles/rnworklets.dir/cpp-adapter.cpp.o In file included from /Users/r/example/node_modules/react-native-worklets-core/android/cpp-adapter.cpp:6: In file included from /Users/r/example/node_modules/react-native-worklets-core/android/../cpp/WKTJsiWorkletApi.h:14: In file included from /Users/r/example/node_modules/react-native-worklets-core/android/../cpp/sharedvalues/WKTJsiSharedValue.h:8: /Users/r/example/node_modules/react-native-worklets-core/android/../cpp/WKTJsiDispatcher.h:97:22: warning: exception of type 'const std::runtime_error &' will be caught by earlier handler [-Wexceptions] 97 | } catch (const std::runtime_error &err) { | ^ /Users/r/example/node_modules/react-native-worklets-core/android/../cpp/WKTJsiDispatcher.h:94:22: note: for type 'const std::exception &' 94 | } catch (const std::exception &err) { | ^ 1 warning generated. [5/9] Building CXX object CMakeFiles/rnworklets.dir/Users/r/example/node_modules/react-native-worklets-core/cpp/wrappers/WKTJsiPromiseWrapper.cpp.o [6/9] Building CXX object CMakeFiles/rnworklets.dir/Users/r/example/node_modules/react-native-worklets-core/cpp/WKTJsiWorkletApi.cpp.o In file included from /Users/r/example/node_modules/react-native-worklets-core/cpp/WKTJsiWorkletApi.cpp:1: In file included from /Users/r/example/node_modules/react-native-worklets-core/cpp/WKTJsiWorkletApi.h:14: In file included from /Users/r/example/node_modules/react-native-worklets-core/android/../cpp/sharedvalues/WKTJsiSharedValue.h:8: /Users/r/example/node_modules/react-native-worklets-core/android/../cpp/WKTJsiDispatcher.h:97:22: warning: exception of type 'const std::runtime_error &' will be caught by earlier handler [-Wexceptions] 97 | } catch (const std::runtime_error &err) { | ^ /Users/r/example/node_modules/react-native-worklets-core/android/../cpp/WKTJsiDispatcher.h:94:22: note: for type 'const std::exception &' 94 | } catch (const std::exception &err) { | ^ 1 warning generated. [7/9] Building CXX object CMakeFiles/rnworklets.dir/Users/r/example/node_modules/react-native-worklets-core/cpp/wrappers/WKTJsiWrapper.cpp.o [8/9] Building CXX object CMakeFiles/rnworklets.dir/Users/r/example/node_modules/react-native-worklets-core/cpp/WKTJsiWorkletContext.cpp.o In file included from /Users/r/example/node_modules/react-native-worklets-core/cpp/WKTJsiWorkletContext.cpp:3: In file included from /Users/r/example/node_modules/react-native-worklets-core/cpp/WKTJsiWorkletApi.h:14: In file included from /Users/r/example/node_modules/react-native-worklets-core/android/../cpp/sharedvalues/WKTJsiSharedValue.h:8: /Users/r/example/node_modules/react-native-worklets-core/android/../cpp/WKTJsiDispatcher.h:97:22: warning: exception of type 'const std::runtime_error &' will be caught by earlier handler [-Wexceptions] 97 | } catch (const std::runtime_error &err) { | ^ /Users/r/example/node_modules/react-native-worklets-core/android/../cpp/WKTJsiDispatcher.h:94:22: note: for type 'const std::exception &' 94 | } catch (const std::exception &err) { | ^ 1 warning generated. [9/9] Linking CXX shared library ../../../../build/intermediates/cxx/Debug/625a6672/obj/x86_64/librnworklets.so FAILED: ../../../../build/intermediates/cxx/Debug/625a6672/obj/x86_64/librnworklets.so : && /Users/dsccmac/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang++ --target=x86_64-none-linux-android26 --sysroot=/Users/dsccmac/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot -fPIC -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D__BIONIC_NO_PAGE_SIZE_MACRO -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -DDEBUG -DJS_RUNTIME_HERMES=1 -fno-limit-debug-info -Wl,-z,max-page-size=16384 -Wl,--build-id=sha1 -Wl,--no-rosegment -Wl,--no-undefined-version -Wl,--fatal-warnings -Wl,--no-undefined -Qunused-arguments -shared -Wl,-soname,librnworklets.so -o ../../../../build/intermediates/cxx/Debug/625a6672/obj/x86_64/librnworklets.so CMakeFiles/rnworklets.dir/Users/r/example/node_modules/react-native-worklets-core/cpp/WKTJsiWorkletApi.cpp.o CMakeFiles/rnworklets.dir/Users/r/example/node_modules/react-native-worklets-core/cpp/WKTJsiWorkletContext.cpp.o CMakeFiles/rnworklets.dir/Users/r/example/node_modules/react-native-worklets-core/cpp/base/WKTJsiHostObject.cpp.o CMakeFiles/rnworklets.dir/Users/r/example/node_modules/react-native-worklets-core/cpp/base/WKTRuntimeLifecycleMonitor.cpp.o CMakeFiles/rnworklets.dir/Users/r/example/node_modules/react-native-worklets-core/cpp/dispatch/WKTDispatchQueue.cpp.o CMakeFiles/rnworklets.dir/Users/r/example/node_modules/react-native-worklets-core/cpp/wrappers/WKTJsiPromiseWrapper.cpp.o CMakeFiles/rnworklets.dir/Users/r/example/node_modules/react-native-worklets-core/cpp/wrappers/WKTJsiWrapper.cpp.o CMakeFiles/rnworklets.dir/cpp-adapter.cpp.o -llog -landroid /Users/dsccmac/.gradle/caches/8.12/transforms/52a52e4c4792af3ca58b2df5dfea7545/transformed/react-android-0.78.1-debug/prefab/modules/jsi/libs/android.x86_64/libjsi.so /Users/dsccmac/.gradle/caches/8.12/transforms/bbbd7faada6db350ac59925f93ab342e/transformed/fbjni-0.7.0/prefab/modules/fbjni/libs/android.x86_64/libfbjni.so /Users/dsccmac/.gradle/caches/8.12/transforms/52a52e4c4792af3ca58b2df5dfea7545/transformed/react-android-0.78.1-debug/prefab/modules/reactnative/libs/android.x86_64/libreactnative.so /Users/dsccmac/.gradle/caches/8.12/transforms/1727645527b8d4a52140297d30f9ce10/transformed/hermes-android-0.78.1-debug/prefab/modules/libhermes/libs/android.x86_64/libhermes.so /Users/dsccmac/.gradle/caches/8.12/transforms/52a52e4c4792af3ca58b2df5dfea7545/transformed/react-android-0.78.1-debug/prefab/modules/hermestooling/libs/android.x86_64/libhermestooling.so -latomic -lm && : ld.lld: error: undefined symbol: std::__ndk1::placeholders::_1 >>> referenced by WKTJsiPromiseWrapper.cpp:25 (/Users/r/example/node_modules/react-native-worklets-core/cpp/wrappers/WKTJsiPromiseWrapper.cpp:25) >>> CMakeFiles/rnworklets.dir/Users/r/example/node_modules/react-native-worklets-core/cpp/wrappers/WKTJsiPromiseWrapper.cpp.o:(RNWorklet::JsiPromiseWrapper::runComputation(facebook::jsi::Runtime&, std::__ndk1::function<void (facebook::jsi::Runtime&, std::__ndk1::shared_ptr<RNWorklet::PromiseParameter>)>)) >>> referenced by WKTJsiHostObject.cpp:43 (/Users/r/example/node_modules/react-native-worklets-core/cpp/base/WKTJsiHostObject.cpp:43) >>> CMakeFiles/rnworklets.dir/Users/r/example/node_modules/react-native-worklets-core/cpp/base/WKTJsiHostObject.cpp.o:(RNWorklet::JsiHostObject::set(facebook::jsi::Runtime&, facebook::jsi::PropNameID const&, facebook::jsi::Value const&)) >>> referenced by WKTJsiHostObject.cpp:64 (/Users/r/example/node_modules/react-native-worklets-core/cpp/base/WKTJsiHostObject.cpp:64) >>> CMakeFiles/rnworklets.dir/Users/r/example/node_modules/react-native-worklets-core/cpp/base/WKTJsiHostObject.cpp.o:(RNWorklet::JsiHostObject::get(facebook::jsi::Runtime&, facebook::jsi::PropNameID const&)) >>> referenced 1 more times ld.lld: error: undefined symbol: std::__ndk1::placeholders::_2 >>> referenced by WKTJsiPromiseWrapper.cpp:25 (/Users/r/example/node_modules/react-native-worklets-core/cpp/wrappers/WKTJsiPromiseWrapper.cpp:25) >>> CMakeFiles/rnworklets.dir/Users/r/example/node_modules/react-native-worklets-core/cpp/wrappers/WKTJsiPromiseWrapper.cpp.o:(RNWorklet::JsiPromiseWrapper::runComputation(facebook::jsi::Runtime&, std::__ndk1::function<void (facebook::jsi::Runtime&, std::__ndk1::shared_ptr<RNWorklet::PromiseParameter>)>)) >>> referenced by WKTJsiHostObject.cpp:43 (/Users/r/example/node_modules/react-native-worklets-core/cpp/base/WKTJsiHostObject.cpp:43) >>> CMakeFiles/rnworklets.dir/Users/r/example/node_modules/react-native-worklets-core/cpp/base/WKTJsiHostObject.cpp.o:(RNWorklet::JsiHostObject::set(facebook::jsi::Runtime&, facebook::jsi::PropNameID const&, facebook::jsi::Value const&)) >>> referenced by WKTJsiHostObject.cpp:73 (/Users/r/example/node_modules/react-native-worklets-core/cpp/base/WKTJsiHostObject.cpp:73) >>> CMakeFiles/rnworklets.dir/Users/r/example/node_modules/react-native-worklets-core/cpp/base/WKTJsiHostObject.cpp.o:(RNWorklet::JsiHostObject::get(facebook::jsi::Runtime&, facebook::jsi::PropNameID const&)) ld.lld: error: undefined symbol: __cxa_begin_catch >>> referenced by WKTJsiPromiseWrapper.cpp:47 (/Users/r/example/node_modules/react-native-worklets-core/cpp/wrappers/WKTJsiPromiseWrapper.cpp:47) >>> CMakeFiles/rnworklets.dir/Users/r/example/node_modules/react-native-worklets-core/cpp/wrappers/WKTJsiPromiseWrapper.cpp.o:(RNWorklet::JsiPromiseWrapper::runComputation(facebook::jsi::Runtime&, std::__ndk1::function<void (facebook::jsi::Runtime&, std::__ndk1::shared_ptr<RNWorklet::PromiseParameter>)>)) >>> referenced by WKTJsiPromiseWrapper.cpp:50 (/Users/r/example/node_modules/react-native-worklets-core/cpp/wrappers/WKTJsiPromiseWrapper.cpp:50) >>> CMakeFiles/rnworklets.dir/Users/r/example/node_modules/react-native-worklets-core/cpp/wrappers/WKTJsiPromiseWrapper.cpp.o:(RNWorklet::JsiPromiseWrapper::runComputation(facebook::jsi::Runtime&, std::__ndk1::function<void (facebook::jsi::Runtime&, std::__ndk1::shared_ptr<RNWorklet::PromiseParameter>)>)) >>> referenced by WKTJsiPromiseWrapper.cpp:32 (/Users/r/example/node_modules/react-native-worklets-core/cpp/wrappers/WKTJsiPromiseWrapper.cpp:32) >>> CMakeFiles/rnworklets.dir/Users/r/example/node_modules/react-native-worklets-core/cpp/wrappers/WKTJsiPromiseWrapper.cpp.o:(RNWorklet::JsiPromiseWrapper::runComputation(facebook::jsi::Runtime&, std::__ndk1::function<void (facebook::jsi::Runtime&, std::__ndk1::shared_ptr<RNWorklet::PromiseParameter>)>)) >>> referenced 12 more times ld.lld: error: undefined symbol: __cxa_end_catch >>> referenced by WKTJsiPromiseWrapper.cpp:35 (/Users/r/example/node_modules/react-native-worklets-core/cpp/wrappers/WKTJsiPromiseWrapper.cpp:35) >>> CMakeFiles/rnworklets.dir/Users/r/example/node_modules/react-native-worklets-core/cpp/wrappers/WKTJsiPromiseWrapper.cpp.o:(RNWorklet::JsiPromiseWrapper::runComputation(facebook::jsi::Runtime&, std::__ndk1::function<void (facebook::jsi::Runtime&, std::__ndk1::shared_ptr<RNWorklet::PromiseParameter>)>)) >>> referenced by WKTJsiPromiseWrapper.cpp:50 (/Users/r/example/node_modules/react-native-worklets-core/cpp/wrappers/WKTJsiPromiseWrapper.cpp:50) >>> CMakeFiles/rnworklets.dir/Users/r/example/node_modules/react-native-worklets-core/cpp/wrappers/WKTJsiPromiseWrapper.cpp.o:(RNWorklet::JsiPromiseWrapper::runComputation(facebook::jsi::Runtime&, std::__ndk1::function<void (facebook::jsi::Runtime&, std::__ndk1::shared_ptr<RNWorklet::PromiseParameter>)>)) >>> referenced by WKTJsiPromiseWrapper.cpp:50 (/Users/r/example/node_modules/react-native-worklets-core/cpp/wrappers/WKTJsiPromiseWrapper.cpp:50) >>> CMakeFiles/rnworklets.dir/Users/r/example/node_modules/react-native-worklets-core/cpp/wrappers/WKTJsiPromiseWrapper.cpp.o:(RNWorklet::JsiPromiseWrapper::runComputation(facebook::jsi::Runtime&, std::__ndk1::function<void (facebook::jsi::Runtime&, std::__ndk1::shared_ptr<RNWorklet::PromiseParameter>)>)) >>> referenced 24 more times ld.lld: error: undefined symbol: std::__ndk1::basic_string<char, std::__ndk1::char_traits<char>, std::__ndk1::allocator<char>>::basic_string(std::__ndk1::basic_string<char, std::__ndk1::char_traits<char>, std::__ndk1::allocator<char>> const&) >>> referenced by WKTJsiPromiseWrapper.cpp:40 (/Users/r/example/node_modules/react-native-worklets-core/cpp/wrappers/WKTJsiPromiseWrapper.cpp:40) >>> CMakeFiles/rnworklets.dir/Users/r/example/node_modules/react-native-worklets-core/cpp/wrappers/WKTJsiPromiseWrapper.cpp.o:(RNWorklet::JsiPromiseWrapper::runComputation(facebook::jsi::Runtime&, std::__ndk1::function<void (facebook::jsi::Runtime&, std::__ndk1::shared_ptr<RNWorklet::PromiseParameter>)>)) >>> referenced by WKTJsiWrapper.cpp:119 (/Users/r/example/node_modules/react-native-worklets-core/cpp/wrappers/WKTJsiWrapper.cpp:119) >>> CMakeFiles/rnworklets.dir/Users/r/example/node_modules/react-native-worklets-core/cpp/wrappers/WKTJsiWrapper.cpp.o:(RNWorklet::JsiWrapper::toString(facebook::jsi::Runtime&)) >>> referenced by tuple:1409 (/Users/dsccmac/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/c++/v1/tuple:1409) >>> CMakeFiles/rnworklets.dir/Users/r/example/node_modules/react-native-worklets-core/cpp/wrappers/WKTJsiWrapper.cpp.o:(std::__ndk1::pair<std::__ndk1::basic_string<char, std::__ndk1::char_traits<char>, std::__ndk1::allocator<char>> const, std::__ndk1::shared_ptr<RNWorklet::JsiWrapper>>::pair[abi:ne180000]<std::__ndk1::basic_string<char, std::__ndk1::char_traits<char>, std::__ndk1::allocator<char>> const&, 0ul>(std::__ndk1::piecewise_construct_t, std::__ndk1::tuple<std::__ndk1::basic_string<char, std::__ndk1::char_traits<char>, std::__ndk1::allocator<char>> const&>&, std::__ndk1::tuple<>&, std::__ndk1::__tuple_indices<0ul>, std::__ndk1::__tuple_indices<...>)) >>> referenced 22 more times ld.lld: error: undefined symbol: std::__ndk1::basic_string<char, std::__ndk1::char_traits<char>, std::__ndk1::allocator<char>>::~basic_string() >>> referenced by WKTJsiPromiseWrapper.cpp:43 (/Users/r/example/node_modules/react-native-worklets-core/cpp/wrappers/WKTJsiPromiseWrapper.cpp:43) >>> CMakeFiles/rnworklets.dir/Users/r/example/node_modules/react-native-worklets-core/cpp/wrappers/WKTJsiPromiseWrapper.cpp.o:(RNWorklet::JsiPromiseWrapper::runComputation(facebook::jsi::Runtime&, std::__ndk1::function<void (facebook::jsi::Runtime&, std::__ndk1::shared_ptr<RNWorklet::PromiseParameter>)>)) >>> referenced by WKTJsiPromiseWrapper.cpp:48 (/Users/r/example/node_modules/react-native-worklets-core/cpp/wrappers/WKTJsiPromiseWrapper.cpp:48) >>> CMakeFiles/rnworklets.dir/Users/r/example/node_modules/react-native-worklets-core/cpp/wrappers/WKTJsiPromiseWrapper.cpp.o:(RNWorklet::JsiPromiseWrapper::runComputation(facebook::jsi::Runtime&, std::__ndk1::function<void (facebook::jsi::Runtime&, std::__ndk1::shared_ptr<RNWorklet::PromiseParameter>)>)) >>> referenced by WKTJsiPromiseWrapper.cpp:48 (/Users/r/example/node_modules/react-native-worklets-core/cpp/wrappers/WKTJsiPromiseWrapper.cpp:48) >>> CMakeFiles/rnworklets.dir/Users/r/example/node_modules/react-native-worklets-core/cpp/wrappers/WKTJsiPromiseWrapper.cpp.o:(RNWorklet::JsiPromiseWrapper::runComputation(facebook::jsi::Runtime&, std::__ndk1::function<void (facebook::jsi::Runtime&, std::__ndk1::shared_ptr<RNWorklet::PromiseParameter>)>)) >>> referenced 193 more times ld.lld: error: undefined symbol: std::__ndk1::__shared_weak_count::~__shared_weak_count() >>> referenced by shared_ptr.h:263 (/Users/dsccmac/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/c++/v1/__memory/shared_ptr.h:263) >>> CMakeFiles/rnworklets.dir/Users/r/example/node_modules/react-native-worklets-core/cpp/base/WKTRuntimeLifecycleMonitor.cpp.o:(std::__ndk1::__shared_ptr_emplace<RNWorklet::RuntimeLifecycleMonitorObject, std::__ndk1::allocator<RNWorklet::RuntimeLifecycleMonitorObject>>::__shared_ptr_emplace[abi:ne180000]<facebook::jsi::Runtime*, std::__ndk1::allocator<RNWorklet::RuntimeLifecycleMonitorObject>, 0>(std::__ndk1::allocator<RNWorklet::RuntimeLifecycleMonitorObject>, facebook::jsi::Runtime*&&)) >>> referenced by shared_ptr.h:246 (/Users/dsccmac/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/c++/v1/__memory/shared_ptr.h:246) >>> CMakeFiles/rnworklets.dir/Users/r/example/node_modules/react-native-worklets-core/cpp/base/WKTRuntimeLifecycleMonitor.cpp.o:(std::__ndk1::__shared_ptr_emplace<RNWorklet::RuntimeLifecycleMonitorObject, std::__ndk1::allocator<RNWorklet::RuntimeLifecycleMonitorObject>>::~__shared_ptr_emplace()) >>> referenced by shared_ptr.h:263 (/Users/dsccmac/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/c++/v1/__memory/shared_ptr.h:263) >>> CMakeFiles/rnworklets.dir/Users/r/example/node_modules/react-native-worklets-core/cpp/wrappers/WKTJsiWrapper.cpp.o:(std::__ndk1::__shared_ptr_emplace<RNWorklet::JsiWrapper, std::__ndk1::allocator<RNWorklet::JsiWrapper>>::__shared_ptr_emplace[abi:ne180000]<RNWorklet::JsiWrapper*&, bool&, std::__ndk1::allocator<RNWorklet::JsiWrapper>, 0>(std::__ndk1::allocator<RNWorklet::JsiWrapper>, RNWorklet::JsiWrapper*&, bool&)) >>> referenced 47 more times ld.lld: error: undefined symbol: __cxa_allocate_exception >>> referenced by WKTJsiWrapper.cpp:25 (/Users/r/example/node_modules/react-native-worklets-core/cpp/wrappers/WKTJsiWrapper.cpp:25) >>> CMakeFiles/rnworklets.dir/Users/r/example/node_modules/react-native-worklets-core/cpp/wrappers/WKTJsiWrapper.cpp.o:(RNWorklet::JsiWrapper::getValue(facebook::jsi::Runtime&)) >>> referenced by WKTJsiPromiseWrapper.cpp:209 (/Users/r/example/node_modules/react-native-worklets-core/cpp/wrappers/WKTJsiPromiseWrapper.cpp:209) >>> CMakeFiles/rnworklets.dir/Users/r/example/node_modules/react-native-worklets-core/cpp/wrappers/WKTJsiPromiseWrapper.cpp.o:(RNWorklet::JsiPromiseWrapper::setValue(facebook::jsi::Runtime&, facebook::jsi::Value const&)) >>> referenced by WKTJsiWrapper.cpp:55 (/Users/r/example/node_modules/react-native-worklets-core/cpp/wrappers/WKTJsiWrapper.cpp:55) >>> CMakeFiles/rnworklets.dir/Users/r/example/node_modules/react-native-worklets-core/cpp/wrappers/WKTJsiWrapper.cpp.o:(RNWorklet::JsiWrapper::wrap(facebook::jsi::Runtime&, facebook::jsi::Value const&, RNWorklet::JsiWrapper*, bool)) >>> referenced 40 more times ld.lld: error: undefined symbol: __cxa_throw >>> referenced by WKTJsiWrapper.cpp:25 (/Users/r/example/node_modules/react-native-worklets-core/cpp/wrappers/WKTJsiWrapper.cpp:25) >>> CMakeFiles/rnworklets.dir/Users/r/example/node_modules/react-native-worklets-core/cpp/wrappers/WKTJsiWrapper.cpp.o:(RNWorklet::JsiWrapper::getValue(facebook::jsi::Runtime&)) >>> referenced by WKTJsiPromiseWrapper.cpp:209 (/Users/r/example/node_modules/react-native-worklets-core/cpp/wrappers/WKTJsiPromiseWrapper.cpp:209) >>> CMakeFiles/rnworklets.dir/Users/r/example/node_modules/react-native-worklets-core/cpp/wrappers/WKTJsiPromiseWrapper.cpp.o:(RNWorklet::JsiPromiseWrapper::setValue(facebook::jsi::Runtime&, facebook::jsi::Value const&)) >>> referenced by WKTJsiWrapper.cpp:55 (/Users/r/example/node_modules/react-native-worklets-core/cpp/wrappers/WKTJsiWrapper.cpp:55) >>> CMakeFiles/rnworklets.dir/Users/r/example/node_modules/react-native-worklets-core/cpp/wrappers/WKTJsiWrapper.cpp.o:(RNWorklet::JsiWrapper::wrap(facebook::jsi::Runtime&, facebook::jsi::Value const&, RNWorklet::JsiWrapper*, bool)) >>> referenced 40 more times ld.lld: error: undefined symbol: __cxa_free_exception >>> referenced by WKTJsiWrapper.cpp:25 (/Users/r/example/node_modules/react-native-worklets-core/cpp/wrappers/WKTJsiWrapper.cpp:25) >>> CMakeFiles/rnworklets.dir/Users/r/example/node_modules/react-native-worklets-core/cpp/wrappers/WKTJsiWrapper.cpp.o:(RNWorklet::JsiWrapper::getValue(facebook::jsi::Runtime&)) >>> referenced by WKTJsiPromiseWrapper.cpp:209 (/Users/r/example/node_modules/react-native-worklets-core/cpp/wrappers/WKTJsiPromiseWrapper.cpp:209) >>> CMakeFiles/rnworklets.dir/Users/r/example/node_modules/react-native-worklets-core/cpp/wrappers/WKTJsiPromiseWrapper.cpp.o:(RNWorklet::JsiPromiseWrapper::setValue(facebook::jsi::Runtime&, facebook::jsi::Value const&)) >>> referenced by WKTJsiWrapper.cpp:55 (/Users/r/example/node_modules/react-native-worklets-core/cpp/wrappers/WKTJsiWrapper.cpp:55) >>> CMakeFiles/rnworklets.dir/Users/r/example/node_modules/react-native-worklets-core/cpp/wrappers/WKTJsiWrapper.cpp.o:(RNWorklet::JsiWrapper::wrap(facebook::jsi::Runtime&, facebook::jsi::Value const&, RNWorklet::JsiWrapper*, bool)) >>> referenced 37 more times ld.lld: error: undefined symbol: operator delete(void*) >>> referenced by shared_ptr.h:246 (/Users/dsccmac/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/c++/v1/__memory/shared_ptr.h:246) >>> CMakeFiles/rnworklets.dir/Users/r/example/node_modules/react-native-worklets-core/cpp/base/WKTRuntimeLifecycleMonitor.cpp.o:(std::__ndk1::__shared_ptr_emplace<RNWorklet::RuntimeLifecycleMonitorObject, std::__ndk1::allocator<RNWorklet::RuntimeLifecycleMonitorObject>>::~__shared_ptr_emplace()) >>> referenced by WKTRuntimeLifecycleMonitor.cpp:16 (/Users/r/example/node_modules/react-native-worklets-core/cpp/base/WKTRuntimeLifecycleMonitor.cpp:16) >>> CMakeFiles/rnworklets.dir/Users/r/example/node_modules/react-native-worklets-core/cpp/base/WKTRuntimeLifecycleMonitor.cpp.o:(RNWorklet::RuntimeLifecycleMonitorObject::~RuntimeLifecycleMonitorObject()) >>> referenced by WKTJsiHostObject.cpp:22 (/Users/r/example/node_modules/react-native-worklets-core/cpp/base/WKTJsiHostObject.cpp:22) >>> CMakeFiles/rnworklets.dir/Users/r/example/node_modules/react-native-worklets-core/cpp/base/WKTJsiHostObject.cpp.o:(RNWorklet::JsiHostObject::~JsiHostObject()) >>> referenced 89 more times ld.lld: error: undefined symbol: __cxa_guard_acquire >>> referenced by Hybrid.h:336 (/Users/dsccmac/.gradle/caches/8.12/transforms/bbbd7faada6db350ac59925f93ab342e/transformed/fbjni-0.7.0/prefab/modules/fbjni/include/fbjni/detail/Hybrid.h:336) >>> CMakeFiles/rnworklets.dir/cpp-adapter.cpp.o:(facebook::jni::HybridClass<facebook::react::CallInvokerHolder, facebook::jni::detail::BaseHybridClass>::JavaPart::cthis() const) >>> referenced by WKTJsiPromiseWrapper.h:96 (/Users/r/example/node_modules/react-native-worklets-core/cpp/wrappers/WKTJsiPromiseWrapper.h:96) >>> CMakeFiles/rnworklets.dir/Users/r/example/node_modules/react-native-worklets-core/cpp/wrappers/WKTJsiPromiseWrapper.cpp.o:(RNWorklet::JsiPromiseWrapper::getExportedFunctionMap()) >>> referenced by CoreClasses-inl.h:683 (/Users/dsccmac/.gradle/caches/8.12/transforms/bbbd7faada6db350ac59925f93ab342e/transformed/fbjni-0.7.0/prefab/modules/fbjni/include/fbjni/detail/CoreClasses-inl.h:683) >>> CMakeFiles/rnworklets.dir/cpp-adapter.cpp.o:(facebook::jni::JavaClass<facebook::jni::HybridClass<facebook::react::CallInvokerHolder, facebook::jni::detail::BaseHybridClass>::JavaPart, facebook::jni::JObject, void>::javaClassStatic()) >>> referenced 21 more times ld.lld: error: undefined symbol: __cxa_guard_release >>> referenced by Hybrid.h:336 (/Users/dsccmac/.gradle/caches/8.12/transforms/bbbd7faada6db350ac59925f93ab342e/transformed/fbjni-0.7.0/prefab/modules/fbjni/include/fbjni/detail/Hybrid.h:336) >>> CMakeFiles/rnworklets.dir/cpp-adapter.cpp.o:(facebook::jni::HybridClass<facebook::react::CallInvokerHolder, facebook::jni::detail::BaseHybridClass>::JavaPart::cthis() const) >>> referenced by WKTJsiPromiseWrapper.h:96 (/Users/r/example/node_modules/react-native-worklets-core/cpp/wrappers/WKTJsiPromiseWrapper.h:96) >>> CMakeFiles/rnworklets.dir/Users/r/example/node_modules/react-native-worklets-core/cpp/wrappers/WKTJsiPromiseWrapper.cpp.o:(RNWorklet::JsiPromiseWrapper::getExportedFunctionMap()) >>> referenced by WKTJsiWorkletContext.h:180 (/Users/r/example/node_modules/react-native-worklets-core/cpp/WKTJsiWorkletContext.h:180) >>> CMakeFiles/rnworklets.dir/Users/r/example/node_modules/react-native-worklets-core/cpp/WKTJsiWorkletContext.cpp.o:(RNWorklet::JsiWorkletContext::getExportedFunctionMap()) >>> referenced 21 more times ld.lld: error: undefined symbol: __cxa_guard_abort >>> referenced by Hybrid.h:336 (/Users/dsccmac/.gradle/caches/8.12/transforms/bbbd7faada6db350ac59925f93ab342e/transformed/fbjni-0.7.0/prefab/modules/fbjni/include/fbjni/detail/Hybrid.h:336) >>> CMakeFiles/rnworklets.dir/cpp-adapter.cpp.o:(facebook::jni::HybridClass<facebook::react::CallInvokerHolder, facebook::jni::detail::BaseHybridClass>::JavaPart::cthis() const) >>> referenced by WKTJsiPromiseWrapper.h:96 (/Users/r/example/node_modules/react-native-worklets-core/cpp/wrappers/WKTJsiPromiseWrapper.h:96) >>> CMakeFiles/rnworklets.dir/Users/r/example/node_modules/react-native-worklets-core/cpp/wrappers/WKTJsiPromiseWrapper.cpp.o:(RNWorklet::JsiPromiseWrapper::getExportedFunctionMap()) >>> referenced by WKTJsiWorkletContext.h:180 (/Users/r/example/node_modules/react-native-worklets-core/cpp/WKTJsiWorkletContext.h:180) >>> CMakeFiles/rnworklets.dir/Users/r/example/node_modules/react-native-worklets-core/cpp/WKTJsiWorkletContext.cpp.o:(RNWorklet::JsiWorkletContext::getExportedFunctionMap()) >>> referenced 18 more times ld.lld: error: undefined symbol: std::__ndk1::recursive_mutex::lock() >>> referenced by unique_lock.h:41 (/Users/dsccmac/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/c++/v1/__mutex/unique_lock.h:41) >>> CMakeFiles/rnworklets.dir/Users/r/example/node_modules/react-native-worklets-core/cpp/wrappers/WKTJsiWrapper.cpp.o:(std::__ndk1::unique_lock<std::__ndk1::recursive_mutex>::unique_lock[abi:ne180000](std::__ndk1::recursive_mutex&)) ld.lld: error: undefined symbol: std::__ndk1::recursive_mutex::unlock() >>> referenced by unique_lock.h:63 (/Users/dsccmac/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/c++/v1/__mutex/unique_lock.h:63) >>> CMakeFiles/rnworklets.dir/Users/r/example/node_modules/react-native-worklets-core/cpp/wrappers/WKTJsiWrapper.cpp.o:(std::__ndk1::unique_lock<std::__ndk1::recursive_mutex>::~unique_lock[abi:ne180000]()) ld.lld: error: undefined symbol: std::__ndk1::__next_prime(unsigned long) >>> referenced by __hash_table:1657 (/Users/dsccmac/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/c++/v1/__hash_table:1657) >>> CMakeFiles/rnworklets.dir/Users/r/example/node_modules/react-native-worklets-core/cpp/base/WKTRuntimeLifecycleMonitor.cpp.o:(void std::__ndk1::__hash_table<RNWorklet::RuntimeLifecycleListener*, std::__ndk1::hash<RNWorklet::RuntimeLifecycleListener*>, std::__ndk1::equal_to<RNWorklet::RuntimeLifecycleListener*>, std::__ndk1::allocator<RNWorklet::RuntimeLifecycleListener*>>::__rehash<true>(unsigned long)) >>> referenced by __hash_table:1665 (/Users/dsccmac/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/c++/v1/__hash_table:1665) >>> CMakeFiles/rnworklets.dir/Users/r/example/node_modules/react-native-worklets-core/cpp/base/WKTRuntimeLifecycleMonitor.cpp.o:(void std::__ndk1::__hash_table<RNWorklet::RuntimeLifecycleListener*, std::__ndk1::hash<RNWorklet::RuntimeLifecycleListener*>, std::__ndk1::equal_to<RNWorklet::RuntimeLifecycleListener*>, std::__ndk1::allocator<RNWorklet::RuntimeLifecycleListener*>>::__rehash<true>(unsigned long)) >>> referenced by __hash_table:1657 (/Users/dsccmac/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/c++/v1/__hash_table:1657) >>> CMakeFiles/rnworklets.dir/Users/r/example/node_modules/react-native-worklets-core/cpp/base/WKTRuntimeLifecycleMonitor.cpp.o:(void std::__ndk1::__hash_table<std::__ndk1::__hash_value_type<facebook::jsi::Runtime*, std::__ndk1::unordered_set<RNWorklet::RuntimeLifecycleListener*, std::__ndk1::hash<RNWorklet::RuntimeLifecycleListener*>, std::__ndk1::equal_to<RNWorklet::RuntimeLifecycleListener*>, std::__ndk1::allocator<RNWorklet::RuntimeLifecycleListener*>>>, std::__ndk1::__unordered_map_hasher<facebook::jsi::Runtime*, std::__ndk1::__hash_value_type<facebook::jsi::Runtime*, std::__ndk1::unordered_set<RNWorklet::RuntimeLifecycleListener*, std::__ndk1::hash<RNWorklet::RuntimeLifecycleListener*>, std::__ndk1::equal_to<RNWorklet::RuntimeLifecycleListener*>, std::__ndk1::allocator<RNWorklet::RuntimeLifecycleListener*>>>, std::__ndk1::hash<facebook::jsi::Runtime*>, std::__ndk1::equal_to<facebook::jsi::Runtime*>, true>, std::__ndk1::__unordered_map_equal<facebook::jsi::Runtime*, std::__ndk1::__hash_value_type<facebook::jsi::Runtime*, std::__ndk1::unordered_set<RNWorklet::RuntimeLifecycleListener*, std::__ndk1::hash<RNWorklet::RuntimeLifecycleListener*>, std::__ndk1::equal_to<RNWorklet::RuntimeLifecycleListener*>, std::__ndk1::allocator<RNWorklet::RuntimeLifecycleListener*>>>, std::__ndk1::equal_to<facebook::jsi::Runtime*>, std::__ndk1::hash<facebook::jsi::Runtime*>, true>, std::__ndk1::allocator<std::__ndk1::__hash_value_type<facebook::jsi::Runtime*, std::__ndk1::unordered_set<RNWorklet::RuntimeLifecycleListener*, std::__ndk1::hash<RNWorklet::RuntimeLifecycleListener*>, std::__ndk1::equal_to<RNWorklet::RuntimeLifecycleListener*>, std::__ndk1::allocator<RNWorklet::RuntimeLifecycleListener*>>>>>::__rehash<true>(unsigned long)) >>> referenced 11 more times ld.lld: error: undefined symbol: std::__ndk1::recursive_mutex::~recursive_mutex() >>> referenced by WKTJsiWrapper.h:30 (/Users/r/example/node_modules/react-native-worklets-core/android/../cpp/wrappers/WKTJsiWrapper.h:30) >>> CMakeFiles/rnworklets.dir/Users/r/example/node_modules/react-native-worklets-core/cpp/wrappers/WKTJsiPromiseWrapper.cpp.o:(RNWorklet::JsiWrapper::~JsiWrapper()) ld.lld: error: undefined symbol: std::__ndk1::condition_variable::notify_all() >>> referenced by WKTDispatchQueue.cpp:12 (/Users/r/example/node_modules/react-native-worklets-core/cpp/dispatch/WKTDispatchQueue.cpp:12) >>> CMakeFiles/rnworklets.dir/Users/r/example/node_modules/react-native-worklets-core/cpp/dispatch/WKTDispatchQueue.cpp.o:(RNWorklet::DispatchQueue::~DispatchQueue()) ld.lld: error: undefined symbol: std::__ndk1::thread::join() >>> referenced by WKTDispatchQueue.cpp:16 (/Users/r/example/node_modules/react-native-worklets-core/cpp/dispatch/WKTDispatchQueue.cpp:16) >>> CMakeFiles/rnworklets.dir/Users/r/example/node_modules/react-native-worklets-core/cpp/dispatch/WKTDispatchQueue.cpp.o:(RNWorklet::DispatchQueue::~DispatchQueue()) ld.lld: error: too many errors emitted, stopping now (use --error-limit=0 to see all errors) clang++: error: linker command failed with exit code 1 (use -v to see invocation) ninja: build stopped: subcommand failed. C++ build system [build] failed while executing: /Users/dsccmac/Library/Android/sdk/cmake/3.22.1/bin/ninja \ -C \ /Users/r/example/node_modules/react-native-worklets-core/android/.cxx/Debug/625a6672/x86_64 \ rnworklets from /Users/r/example/node_modules/react-native-worklets-core/android * Try: > Run with --stacktrace option to get the stack trace. > Run with --info or --debug option to get more log output. > Run with --scan to get full insights. > Get more help at https://help.gradle.org. BUILD FAILED in 36s. info Run CLI with --verbose flag for more details. 什么原因
09-09
cmake --build . --target help The following are some of the valid targets for this Makefile: ... all (the default if no target is provided) ... clean ... depend ... edit_cache ... install ... install/local ... install/strip ... list_install_components ... rebuild_cache ... test ... Continuous ... ContinuousBuild ... ContinuousConfigure ... ContinuousCoverage ... ContinuousMemCheck ... ContinuousStart ... ContinuousSubmit ... ContinuousTest ... ContinuousUpdate ... Experimental ... ExperimentalBuild ... ExperimentalConfigure ... ExperimentalCoverage ... ExperimentalMemCheck ... ExperimentalStart ... ExperimentalSubmit ... ExperimentalTest ... ExperimentalUpdate ... Nightly ... NightlyBuild ... NightlyConfigure ... NightlyCoverage ... NightlyMemCheck ... NightlyMemoryCheck ... NightlyStart ... NightlySubmit ... NightlyTest ... NightlyUpdate ... build_info ... common ... ggml ... ggml-base ... ggml-cpu ... llama ... llama-batched ... llama-batched-bench ... llama-bench ... llama-cli ... llama-convert-llama2c-to-ggml ... llama-cvector-generator ... llama-diffusion-cli ... llama-embedding ... llama-eval-callback ... llama-export-lora ... llama-finetune ... llama-gemma3-cli ... llama-gen-docs ... llama-gguf ... llama-gguf-hash ... llama-gguf-split ... llama-imatrix ... llama-llava-cli ... llama-logits ... llama-lookahead ... llama-lookup ... llama-lookup-create ... llama-lookup-merge ... llama-lookup-stats ... llama-minicpmv-cli ... llama-mtmd-cli ... llama-parallel ... llama-passkey ... llama-perplexity ... llama-q8dot ... llama-quantize ... llama-qwen2vl-cli ... llama-retrieval ... llama-run ... llama-save-load-state ... llama-server ... llama-simple ... llama-simple-chat ... llama-speculative ... llama-speculative-simple ... llama-tokenize ... llama-tts ... llama-vdot ... mtmd ... sha1 ... sha256 ... test-alloc ... test-arg-parser ... test-autorelease ... test-backend-ops ... test-barrier ... test-c ... test-chat ... test-chat-parser ... test-chat-template ... test-gbnf-validator ... test-gguf ... test-grammar-integration ... test-grammar-parser ... test-json-partial ... test-json-schema-to-grammar ... test-llama-grammar ... test-log ... test-model-load-cancel ... test-mtmd-c-api ... test-opt ... test-quantize-fns ... test-quantize-perf ... test-quantize-stats ... test-regex-partial ... test-rope ... test-sampling ... test-thread-safety ... test-tokenizer-0 ... test-tokenizer-1-bpe ... test-tokenizer-1-spm ... xxhash
10-04
你运行了: ```bash cmake --build . --target help ``` 输出列出了所有可用的构建目标(targets),其中包括: - `llama-cli` - `llama-server` - `llama-quantize` - `llama-perplexity` - `test-chat` - 等等 但 **没有 `main` 和 `server`**。 --- ## ✅ 正确答案:在当前版本的 `llama.cpp` 中 > 🔴 `main` 已被重命名为 `llama-cli` > 🔴 `server` 已被重命名为 `llama-server` 所以你看到的是最新命名规范的结果! --- ## 📌 如何构建命令行推理程序? 使用: ```bash cmake --build . --target llama-cli -j ``` ✅ 生成可执行文件: ``` build/examples/llama-cli ``` 📌 功能:加载模型并进行文本推理(即旧版 `main` 的功能) --- ## 📌 如何构建 HTTP 服务端? 使用: ```bash cmake --build . --target llama-server -j ``` ✅ 生成可执行文件: ``` build/examples/llama-server ``` 📌 功能:提供类似 OpenAI API 的 HTTP 接口,支持 `/completion`, `/embedding` 等。 > ⚠️ 注意:需要启用 `-DLLAMA_CURL=ON` 才能完整支持网络功能。 --- ## ✅ 完整推荐构建流程 ```bash cd llama.cpp/build rm -rf * # 配置项目(建议开启 curl 支持 server) cmake .. \ -DCMAKE_BUILD_TYPE=Release \ -DLLAMA_CURL=ON \ -DLLAMA_METAL=ON # macOS M系列芯片加速 -DLLAMA_CUDA=ON # NVIDIA GPU 加速(可选) -DLLAMA_BLAS=ON # 启用 BLAS 数学库优化 # 查看所有目标(可选) cmake --build . --target help # 构建核心工具 cmake --build . --target llama-cli llama-server llama-quantize -j ``` --- ## 🧩 为什么改名?背景说明 从 2023 年底开始,`llama.cpp` 社区对代码结构进行了重构: | 旧名称 | 新名称 | 原因 | |-------|--------|------| | `main` | `llama-cli` | 更明确表示是“命令行接口” | | `server` | `llama-server` | 统一命名风格,避免歧义 | | `quantize` | `llama-quantize` | 模块化命名,便于扩展 | 👉 所有 example 程序现在都加上了 `llama-` 前缀,提升一致性。 --- ## ✅ 验证是否成功构建 ```bash ./examples/llama-cli --help ./examples/llama-server --port 8080 ``` 你应该能看到帮助信息或启动日志。 示例运行: ```bash # 运行一个本地推理 ./examples/llama-cli \ -m ./models/llama3-8b-instruct.Q4_K_M.gguf \ -p "Hello, how are you?" \ -n 128 # 启动服务器 ./examples/llama-server \ -m ./models/llama3-8b-instruct.Q4_K_M.gguf \ --port 8080 ``` 然后你可以通过 curl 测试: ```bash curl http://localhost:8080/completion \ -d '{"prompt": "Hello, who are you?", "temperature": 0.7}' ``` --- ## 💡 小技巧:创建别名方便使用 ```bash ln -s examples/llama-cli main ln -s examples/llama-server server ln -s examples/llama-quantize quantize ./main --help ./server --port 8080 ``` 这样就可以继续用旧习惯命名。 --- ## ❌ 常见错误总结 | 错误操作 | 结果 | 正确做法 | |--------|------|---------| | `cmake --build . --target main` | 报错:no such target | 改为 `llama-cli` | | `cmake --build . --target server` | 报错:no such target | 改为 `llama-server` | | 忽略 `-DLLAMA_CURL=ON` | server 缺少 HTTPS 下载支持 | 构建时开启 | | 使用过时教程中的 `BUILD_MAIN=ON` | 变量未被使用 | 不再需要 | ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值