FAILURE: Build completed with 2 failures.
1: Task failed with an exception.
-----------
* What went wrong:
Execution failed for task ':shotsync:externalNativeBuildDebug'.
> Build command failed.
? Error while executing process D:\Android\AndroidSdk\cmake\3.10.2.4988404\bin\ninja.exe with arguments {-C E:\work\projects\CameraShotSync\shotsync\.cxx\cmake\debug\armeabi-v7a shotsync socket stcrpc yyjson}
? ninja: Entering directory `E:\work\projects\CameraShotSync\shotsync\.cxx\cmake\debug\armeabi-v7a'
? [1/2] Building CXX object CMakeFiles/shotsync.dir/SyncClient.cpp.o
? [2/2] Linking CXX shared library E:\work\projects\CameraShotSync\shotsync\build\intermediates\cmake\debug\obj\armeabi-v7a\libshotsync.so
? FAILED: E:/work/projects/CameraShotSync/shotsync/build/intermediates/cmake/debug/obj/armeabi-v7a/libshotsync.so
? cmd.exe /C "cd . && D:\Android\AndroidSdk\ndk-bundle\toolchains\llvm\prebuilt\windows-x86_64\bin\clang++.exe --target=armv7-none-linux-androideabi19 --gcc-toolchain=D:/Android/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/windows-x86_64 --sysroot=D:/Android/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/windows-x86_64/sysroot -fPIC -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -march=armv7-a -mthumb -Wformat -Werror=format-security? -std=c++11 -O0 -fno-limit-debug-info? -Wl,--exclude-libs,libgcc.a -Wl,--exclude-libs,libgcc_real.a -Wl,--exclude-libs,libatomic.a -static-libstdc++ -Wl,--build-id=sha1 -Wl,--no-rosegment -Wl,--fatal-warnings -Wl,--exclude-libs,libunwind.a -Wl,--no-undefined -Qunused-arguments -shared -Wl,-soname,libshotsync.so -o E:\work\projects\CameraShotSync\shotsync\build\intermediates\cmake\debug\obj\armeabi-v7a\libshotsync.so CMakeFiles/shotsync.dir/shotsync.cpp.o CMakeFiles/shotsync.dir/SyncServer.cpp.o CMakeFiles/shotsync.dir/SyncClient.cpp.o? E:/work/projects/CameraShotSync/shotsync/build/intermediates/cmake/debug/obj/armeabi-v7a/libsocket.so E:/work/projects/CameraShotSync/shotsync/build/intermediates/cmake/debug/obj/armeabi-v7a/libstcrpc.so -llog -latomic -lm && cd ."
? ld: error: undefined symbol: rpc_alloc()
? >>> referenced by SyncClient.cpp:27 (E:/work/projects/CameraShotSync/shotsync/src/main/cpp\SyncClient.cpp:27)
? >>>?????????????? CMakeFiles/shotsync.dir/SyncClient.cpp.o:(ClientInit)
? >>> did you mean: extern "C" rpc_alloc
? >>> defined in: E:/work/projects/CameraShotSync/shotsync/build/intermediates/cmake/debug/obj/armeabi-v7a/libstcrpc.so
? clang++: error: linker command failed with exit code 1 (use -v to see invocation)
? ninja: build stopped: subcommand failed.
?
* 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.
==============================================================================
2: Task failed with an exception.
-----------
* What went wrong:
Execution failed for task ':shotsync:externalNativeBuildRelease'.
> Build command failed.
? Error while executing process D:\Android\AndroidSdk\cmake\3.10.2.4988404\bin\ninja.exe with arguments {-C E:\work\projects\CameraShotSync\shotsync\.cxx\cmake\release\armeabi-v7a shotsync socket stcrpc yyjson}
? ninja: Entering directory `E:\work\projects\CameraShotSync\shotsync\.cxx\cmake\release\armeabi-v7a'
? [1/2] Building CXX object CMakeFiles/shotsync.dir/SyncClient.cpp.o
? [2/2] Linking CXX shared library E:\work\projects\CameraShotSync\shotsync\build\intermediates\cmake\release\obj\armeabi-v7a\libshotsync.so
? FAILED: E:/work/projects/CameraShotSync/shotsync/build/intermediates/cmake/release/obj/armeabi-v7a/libshotsync.so
? cmd.exe /C "cd . && D:\Android\AndroidSdk\ndk-bundle\toolchains\llvm\prebuilt\windows-x86_64\bin\clang++.exe --target=armv7-none-linux-androideabi19 --gcc-toolchain=D:/Android/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/windows-x86_64 --sysroot=D:/Android/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/windows-x86_64/sysroot -fPIC -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -march=armv7-a -mthumb -Wformat -Werror=format-security? -std=c++11 -Oz -DNDEBUG? -Wl,--exclude-libs,libgcc.a -Wl,--exclude-libs,libgcc_real.a -Wl,--exclude-libs,libatomic.a -static-libstdc++ -Wl,--build-id=sha1 -Wl,--no-rosegment -Wl,--fatal-warnings -Wl,--exclude-libs,libunwind.a -Wl,--no-undefined -Qunused-arguments -shared -Wl,-soname,libshotsync.so -o E:\work\projects\CameraShotSync\shotsync\build\intermediates\cmake\release\obj\armeabi-v7a\libshotsync.so CMakeFiles/shotsync.dir/shotsync.cpp.o CMakeFiles/shotsync.dir/SyncServer.cpp.o CMakeFiles/shotsync.dir/SyncClient.cpp.o? E:/work/projects/CameraShotSync/shotsync/build/intermediates/cmake/release/obj/armeabi-v7a/libsocket.so E:/work/projects/CameraShotSync/shotsync/build/intermediates/cmake/release/obj/armeabi-v7a/libstcrpc.so -llog -latomic -lm && cd ."
? ld: error: undefined symbol: rpc_alloc()
? >>> referenced by SyncClient.cpp:27 (E:/work/projects/CameraShotSync/shotsync/src/main/cpp\SyncClient.cpp:27)
? >>>?????????????? CMakeFiles/shotsync.dir/SyncClient.cpp.o:(ClientInit)
? >>> did you mean: extern "C" rpc_alloc
? >>> defined in: E:/work/projects/CameraShotSync/shotsync/build/intermediates/cmake/release/obj/armeabi-v7a/libstcrpc.so
? clang++: error: linker command failed with exit code 1 (use -v to see invocation)
? ninja: build stopped: subcommand failed.
?
* 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 918ms
41 actionable tasks: 2 executed, 39 up-to-date
其实cmake模块依赖啥的写得没问题,问题就在源码里,对C库的头文件引用,是直接写在了C++文件里,并且没有加extern "C",把C库的头文件引用扔到对应的头文件里,并且包含里在extern "C"里就好了,像这样: