【发布时间】:2018-08-29 18:41:41
【问题描述】:
我在 Visual Studio 2017 中使用了 android ndk 13b,我得到了 android ndk 15c 的更新,其中增加了一个错误。我也在使用新的 Clang 5.0(之前是 3.8)。这是错误:
/usr/local/google/buildbot/src/android/ndk-r15-release/ndk/sources/android/support/src/stdio/vfprintf.c(242): 错误:未定义对“__signbit”的引用
这是我详细的完整回复:
1>Android clang 版本 5.0.300080(基于 LLVM 5.0.300080) 1>目标:i686-none-linux-android 1>线程模型:posix 1>安装目录: C:\ProgramData\Microsoft\AndroidNDK64\android-ndk-r15c\toolchains\llvm\prebuilt\windows-x86_64\bin 1>找到候选GCC安装: C:\ProgramData\Microsoft\AndroidNDK64\android-ndk-r15c\toolchains\x86-4.9\prebuilt\windows-x86_64/lib/gcc/i686-linux-android\4.9.x 1>选择的GCC安装: C:\ProgramData\Microsoft\AndroidNDK64\android-ndk-r15c\toolchains\x86-4.9\prebuilt\windows-x86_64/lib/gcc/i686-linux-android/4.9.x 1>候选多库:.;@m32 1>选定的多库:.;@m32 1> “C:\ProgramData\Microsoft\AndroidNDK64\android-ndk-r15c\toolchains\x86-4.9\prebuilt\windows-x86_64/lib/gcc/i686-linux-android/4.9.x/../../.. /../i686-linux-android/bin\ld" “--sysroot=C:\ProgramData\Microsoft\AndroidNDK64\android-ndk-r15c\platforms\android-23\arch-x86” --eh-frame-hdr -m elf_i386 -shared -o "x86\Release\libPredictEngineMultiLang.so" “C:\ProgramData\Microsoft\AndroidNDK64\android-ndk-r15c\platforms\android-23\arch-x86/usr/lib\crtbegin_so.o” “-LC:\ProgramData\Microsoft\AndroidNDK64\android-ndk-r15c\toolchains\llvm\prebuilt\windows-x86_64\lib64\clang\5.0.300080\lib\linux\i386” “-LC:\ProgramData\Microsoft\AndroidNDK64\android-ndk-r15c\toolchains\x86-4.9\prebuilt\windows-x86_64/lib/gcc/i686-linux-android/4.9.x” “-LC:\ProgramData\Microsoft\AndroidNDK64\android-ndk-r15c\toolchains\x86-4.9\prebuilt\windows-x86_64/lib/gcc/i686-linux-android/4.9.x/../../. ./../i686-linux-android/lib" “-LC:\ProgramData\Microsoft\AndroidNDK64\android-ndk-r15c\platforms\android-23\arch-x86/usr/lib” “-rpath-link=C:\ProgramData\Microsoft\AndroidNDK64\android-ndk-r15c\platforms\android-23\arch-x86\usr\lib” “-rpath-link=C:\ProgramData\Microsoft\AndroidNDK64\android-ndk-r15c\platforms\android-23\arch-x86\usr\lib” “-LC:\ProgramData\Microsoft\AndroidNDK64\android-ndk-r15c\platforms\android-23\arch-x86\usr\lib” “-LC:\ProgramData\Microsoft\AndroidNDK64\android-ndk-r15c\toolchains\x86-4.9\prebuilt\windows-x86_64\lib\gcc\i686-linux-android\4.9.x” “-LC:\ProgramData\Microsoft\AndroidNDK64\android-ndk-r15c\sources\cxx-stl\llvm-libc++\libs\x86” “-LC:\ProgramData\Microsoft\AndroidNDK64\android-ndk-r15c\toolchains\x86-4.9\prebuilt\windows-x86_64\lib\gcc\i686-linux-android\4.9.x” “-LC:\ProgramData\Microsoft\AndroidNDK64\android-ndk-r15c\sources\cxx-stl\llvm-libc++\libs\x86” --no-undefined -z relro -z now -z noexecstack "x86\Release\CharsetConverter.o" "x86\Release\CppSQLite3.o" “x86\Release\PhonemConverterEN.o” "x86\Release\PhonemConverterFR.o" "x86\Release\PhoneticEngineEN.o" "x86\Release\PhoneticEngineFR.o" "x86\Release\PredictDb.o" "x86\Release\PredictEngineEN.o" "x86\Release\PredictEngineFR.o" "x86\Release\SearchEngineEN.o" "x86\Release\SearchEngineFR.o" "x86\Release\sqlite3.o" "x86\Release\DictionaryEN.o" "x86\Release\DictionaryFR.o" "x86\Release\PhonemEN.o" "x86\Release\PhonemFR.o" "x86\Release\PredictEN.o" “x86\Release\PredictFR.o” “C:\Users\hhenry-garon\Downloads\OpenSSL-for-Android-Prebuilt-master\OpenSSL-for-Android-Prebuilt-master\openssl-1.0.2\x86\lib\libcrypto.a” -landroid_support -lc++_static -lc++abi -landroid_support -lc++_static -lc++abi -llog -landroid -lgcc -ldl -lc -lgcc -ldl "C:\ProgramData\Microsoft\AndroidNDK64\android- ndk-r15c\platforms\android-23\arch-x86/usr/lib\crtend_so.o" 1>/usr/local/google/buildbot/src/android/ndk-r15-release/ndk/sources/android/support/src/stdio/vfprintf.c(242): 错误:未定义对“__signbit”的引用 1>clang.exe:错误: 链接器命令失败,退出代码为 1(使用 -v 查看调用)
我在 Visual Studio 2017 上使用 Clang 5.0 在 x86 中编译一个 android 库 .so。我只读到也许我可以添加一个 no-stdio 配置,但我不知道在 Visual Studio 2017 中在哪里做。
谢谢
【问题讨论】:
标签: android c++ visual-studio android-ndk clang