gpt4 book ai didi

android - 使用 android ndk 15c __signbit 在 vi​​sual studio 错误上编译 android .so 库

转载 作者:行者123 更新时间:2023-11-30 05:03:28 25 4
gpt4 key购买 nike

我在 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): error : undefined reference to '__signbit'

这是我冗长的完整回复:

1>Android clang version 5.0.300080 (based on LLVM 5.0.300080) 1>Target: i686-none-linux-android 1>Thread model: posix 1>InstalledDir: C:\ProgramData\Microsoft\AndroidNDK64\android-ndk-r15c\toolchains\llvm\prebuilt\windows-x86_64\bin 1>Found candidate GCC installation: C:\ProgramData\Microsoft\AndroidNDK64\android-ndk-r15c\toolchains\x86-4.9\prebuilt\windows-x86_64/lib/gcc/i686-linux-android\4.9.x 1>Selected GCC installation: C:\ProgramData\Microsoft\AndroidNDK64\android-ndk-r15c\toolchains\x86-4.9\prebuilt\windows-x86_64/lib/gcc/i686-linux-android/4.9.x 1>Candidate multilib: .;@m32 1>Selected multilib: .;@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): error : undefined reference to '__signbit' 1>clang.exe : error : linker command failed with exit code 1 (use -v to see invocation)

我正在 x86 中编译一个 android 库。所以在 visual studio 2017 上使用 Clang 5.0。我只读到也许我可以添加一个 no-stdio 配置,但我不知道在 visual studio 2017 中在哪里做。

谢谢

最佳答案

对于遇到此问题的任何其他人 - 我通过在 vs 的链接器标志中的“库依赖项”中添加“m”来解决此问题。看起来 libc++ 对 c 数学库有依赖性。 printf、sprintf 等函数正在使用 __signbit。

关于android - 使用 android ndk 15c __signbit 在 vi​​sual studio 错误上编译 android .so 库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49392881/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com