当前位置: 首页 > 知识库问答 >
问题:

用android ndk 15C__Signbit编译visual studio错误中的android.so库

裴宏壮
2023-03-14

我在visual Studio2017中使用android NDK13B,我得到了android NDK15C的更新,其中增加了一个错误。我也在使用新的Clang5.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>installeddir:c:\programdata\microsoft\androidndk64\androidndk-r15c\toolchains\LLVM\prebuild\windows-x86_64\bin 1>找到候选GCC安装\androidndk64\android-ndk-r15c\toolchains\x86-4.9\prebuild\windows-x86_64/lib/GCC/i686-linux-android/4.9.x/../..//..///i686-linux-android/bin\ld“.;@m321>选定的multilib:.;@m321>”t=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\prebuild\windows-x86_64\lib64\clang\prebuild\lib\link\i386“-lc:\programdata\microsoft\androidndk64\lib64\toolchains\i386”“-lc:\programdata\microsoft\androidndk64\android-ndk-r15c\toolchains\x86-4.9\prebuild\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:\-x86\usr\lib”-rpath-link=c:\programdata\microsoft\androidndk64\android-ndk-r15c\platforms\androidndk-23\arch-x86\usr\lib“-4.9\prebuild\windows-x86_64\lib\gcc\i686-linux-Android\4.9.x“-lc:\programdate\microsoft\androidndk64\android-ndk-r15c\sources\cxx-stl\llvm-libc++\libs\x86”\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\phonemconverterfr.o“x86\release\phoneticenginefr.o”x86\release\sqlite3.o x86\release\dictionaryen.o x86\release\dictionaryfr.o x86\release\phonemfr.o x86\release\phonemfr.o x86\release\predictfr.o x86\release\predictfr.o x86\release\predictfr.o x86\release\predictfr.o x86\release\predictfr.openssl-for-android-prebuild-master\openssl-for-android-prebuild-master\openssl-for-android-prebuild-master\openssl-1.0.2\x86\lib\libcrypto.a“-landroid_support-lc++_static-lc++abi-landroid_support-lc++lbi-ldroid_support-lc++lbi-llog-landroid-lgcc-ldll”r15-release/ndk/sources/android/support/src/stdio/vfprintf.c(242):错误:未定义对'__signbit'1>clang.exe的引用:错误:链接器命令失败,退出代码为1(使用-v查看调用

我正在用x86编译一个android库。所以在visual Studio2017上用Clang5.0编译。我只读到也许我可以添加一个no-stdio配置,但我不知道在visual Studio2017中哪里可以这样做。

谢谢

共有1个答案

樊腾
2023-03-14

对于其他遇到这种情况的人,我通过在vs中的链接器标志中的“库依赖项”中添加“m”来解决这个问题。libc++似乎对c math库有依赖项。像printf、sprintf等函数都使用__signbit。

 类似资料:
  • 我正在开发一个使用undertow的webapp,我对java还很陌生。运行ServeletEngine时出错。Java语言我查看了其他相关帖子,但他们没有解决我的问题。请帮帮我。 错误:[错误]无法执行目标组织。阿帕奇。专家插件:maven编译器插件:2.3.2:在project undertow服务器上编译(默认编译):编译失败:编译失败: 我的目录结构是:~/undertow-server/

  • 问题内容: 我犯了一个可怕的错误,那就是告诉Netbeans在运行Maven应用程序时始终忽略编译错误。 现在,我要撤消此操作,无论如何我似乎都无法在各种配置面板中找到任何选项。 有人知道可以在哪里更改此选项吗? TIA! 一月 问题答案: 不要打扰-在创建目录diff后找到它: 停止Netbeans,删除下面的文件,然后再次启动Netbeans。 .netbeans / 7.0 / config

  • 问题内容: 当我在Netbeans中构建并运行程序时,它可以正常工作。但是当我尝试“ mvn compile”时,使用相同的pom.xml文件会出现以下错误: 我的Java版本不是1.3,这里是“ mvn -version”的结果 这是第53行: 问题答案: 问题是在Maven2中默认使用和 您可以通过将其添加到pom中来解决此问题: 将其放在最顶层的父pom中是很实际的,这样您派生的pom不需要

  • 我遇到了一个初学者的编译错误: 我的简单程序: 我尝试使用以下命令编译它: gcc-g-Wall-ansi launch_瓷砖。c-o tiles\u程序 并得到这些错误: 启动_tiles。c: 在函数“main”中: launch_tiles. c: 17:19:错误:预期')'之前';'令牌 launch_tiles. c: 17:19:错误:太少的参数函数'fget' /usr/inclu

  • 当我退出我的应用程序时,这个folloeing错误已经产生。

  • 我是Scala和SBT的新手,所以我可能会遗漏一些明显的东西。 我试图编译http://www.scalafx.org/docs/quickstart/上的HelloWorld示例