Android NDK - 在API 21上出现“未知类型名称'wchar_t'”

4

当我们尝试以以下命令行方式在我们的Makefile文件中编译Network.cNetwork.o(为我们的android库network.so),我们确实会收到错误提示:error: unknown type name 'wchar_t'

命令行选项:

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
-Wno-write-strings
-Wno-sign-compare
-Wno-type-limits
-Wno-missing-field-initializers
-Wno-cast-qual
-fstack-protector-strong
-DANDROID
-march=armv7-a
-mfloat-abi=softfp
-mfpu=vfp
-fno-builtin-memmove
--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
-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.
-ID:\android\sdk\ndk-bundle\sources\cxx-stl\gnu-libstdc++\4.9\include
-ID:\android\sdk\ndk-bundle\sources\cxx-stl\gnu-libstdc++\4.9\libs\armeabi-v7a\include
-ID:\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
1个回答

2
在C++中,wchar_t是一种内置类型(在MSVC中可以使用命令行选项/Zc:wchar_t启用),而在经典的C中,我们仍然需要确保包含其头文件,例如:
#include <wchar.h>

但是我们预期 Android 需要在命令行中定义一些全局宏来启用 wchar_t (因为我们之前在 MSVC 上的经验)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接