Android NDK - неизвестное имя типа 'wchar_t' (по API 21) - PullRequest
0 голосов
/ 08 января 2019

мы получаем error: unknown type name 'wchar_t'

при попытке скомпилировать Network.c в Network.o для нашей библиотеки Android network.so с ниже командной строки в Makefile

параметры командной строки:

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

1 Ответ

0 голосов
/ 08 января 2019

В то время как в C ++ wchar_t является встроенным типом (а в MSVC мы включаем его с помощью /Zc:wchar_t командной строки), в старом добром * C нам все еще нужно обеспечить включение его заголовка, например:

#include <wchar.h>

Старый ответ: добавление ниже к началу Nework.c исправило это для меня:

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

но мы ожидали, что в Android будет какой-то глобальный макрос, который нужно определить в командной строке, чтобы включить wchar_t

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...