简体   繁体   English

Android NDK - 未知类型名称'wchar_t'(在API 21上)

[英]Android NDK - unknown type name 'wchar_t' (on API 21)

we do get error: unknown type name 'wchar_t' 我们收到error: unknown type name 'wchar_t'

while trying to compile Network.c to Network.o for our android library network.so with below command-line in Makefile 同时尝试使用Makefile中的命令行编译Network.cNetwork.o为我们的android库network.so

command-line options: 命令行选项:

D:\android\sdk\ndk-bundle/toolchains/arm-linux-androideabi-4.9/prebuilt/windows/bin/arm-linux-androideabi-gcc
-c
-pipe
-ID:/android/sdk/ndk-bundle/sysroot/usr/include
-ID:/android/sdk/ndk-bundle/sysroot/usr/include/arm-linux-androideabi
-ID:/android/sdk/ndk-bundle/toolchains/x86-4.9/prebuilt/windows/lib/gcc/arm-linux-androideabi/4.9.x/include
-Wno-attributes
-Wno-unused-label
-Wno-unused-parameter
-Wno-unused-variable
-Wno-unused-but-set-variable
-Wno-unused-value
-Wno-unused-function
-fstack-protector-strong
-DANDROID
-march=armv7-a
-mfloat-abi=softfp
-mfpu=vfp
-fno-builtin-memmove
-ID:/android/sdk/ndk-bundle/sysroot/usr/include
-ID:/android/sdk/ndk-bundle/sysroot/usr/include/arm-linux-androideabi
-ID:/android/sdk/ndk-bundle/toolchains/x86-4.9/prebuilt/windows/lib/gcc/arm-linux-androideabi/4.9.x/include
-Wno-attributes
-Wno-unused-label
-Wno-unused-parameter
-Wno-unused-variable
-Wno-unused-but-set-variable
-Wno-unused-value
-Wno-unused-function
-Wno-write-strings
-Wno-sign-compare
-Wno-type-limits
--sysroot=D:\android\sdk\ndk-bundle/platforms/android-21/arch-arm/
-IC:/compiler/qt_android_armv7/mkspecs/features/../../src/extras/include
-ID:/android/sdk/ndk-bundle/sysroot/usr/include
-ID:/android/sdk/ndk-bundle/sysroot/usr/include/arm-linux-androideabi
-ID:/android/sdk/ndk-bundle/toolchains/x86-4.9/prebuilt/windows/lib/gcc/arm-linux-androideabi/4.9.x/include
-Wno-attributes
-Wno-unused-label
-Wno-unused-parameter
-Wno-unused-variable
-Wno-unused-but-set-variable
-Wno-unused-value
-Wno-unused-function
-Wno-missing-field-initializers
-Wno-cast-qual
-g
-marm
-O0
-Wall
-W
-D_REENTRANT
-fPIC
-D__ANDROID_API__=21
-DANDROID_VPN
-DANDROID_VPN_UNICODE
-DSOFTETHER_NO_CHANGE
-DCEDAR_CLIENT_STR=\"LimeyGate.Client\"
-D_DEBUG
-DDEBUG
-DUNIX
-DUNIX_LINUX
-D_REENTRANT
-DREENTRANT
-D_THREAD_SAFE
-D_THREADSAFE
-DTHREAD_SAFE
-DTHREADSAFE
-D_FILE_OFFSET_BITS=64
-DQT_QML_DEBUG
-DQT_GUI_LIB
-DQT_CORE_LIB
-I..\..\projects\VpnProject\client-android\backend
-I.
-I..\..\projects\VpnProject\client-android\backend\include
-I..\..\projects\VpnProject\3rdParty
-IC:\compiler\qt_android_armv7\src\extras\lib\crypt\openssl-1.0.1c\include
-I..\..\projects\VpnProject\SoftEtherVPN\src
-I..\..\projects\VpnProject\SoftEtherVPN\src\Cedar
-IC:\compiler\qt_android_armv7\include
-IC:\compiler\qt_android_armv7\include\QtGui
-IC:\compiler\qt_android_armv7\include\QtCore
-I.
-I..\..\android\sdk\ndk-bundle\sources\cxx-stl\gnu-libstdc++\4.9\include
-I..\..\android\sdk\ndk-bundle\sources\cxx-stl\gnu-libstdc++\4.9\libs\armeabi-v7a\include
-I..\..\android\sdk\ndk-bundle\sysroot\usr\include
-IC:\compiler\qt_android_armv7\mkspecs\android-g++
-o
Network.obj
..\..\projects\VpnProject\SoftEtherVPN\src\Mayaqua\Network.c

While in C++ wchar_t is a built-in type (and in MSVC we enable it with /Zc:wchar_t command-line), in the good old C we still need to ensure to include its header like: 虽然在C ++中, wchar_t是内置类型(在MSVC中我们使用/Zc:wchar_t命令行启用它),但在旧的C我们仍然需要确保包含其标题,如:

#include <wchar.h>

Old Answer: adding below to the begin of Nework.c did fix it for me: 旧答案:Nework.c的开头添加以下Nework.c确实为我解决了这个问题:

#ifdef ANDROID
#  include <wchar.h>
#endif

but we did expect Android to have some kind of global macro that needs to be defined in command-line to enable wchar_t 但是我们确实希望Android有一些需要在命令行中定义的全局宏来启用wchar_t

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM