Я не могу получить следующий тривиальный код для компиляции / компоновки, и проблема кажется специфической для std :: wstring и библиотеки C ++ gnustl_static.Буду признателен за любую помощь.
файл main.cpp:
#include <string>
int main(void)
{
std::wstring wtest(L"Test");
return 0;
}
Файл Application.mk:
APP_CFLAGS += -fexceptions
APP_STL := gnustl_static
Файл Android.mk:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := TestWCharApp
LOCAL_CFLAGS := -D_GLIBCXX_USE_WCHAR_T
LOCAL_SRC_FILES := main.cpp
include $(BUILD_EXECUTABLE)
При попытке связать вышеупомянутое приложение с помощью gnustl_static я получаю следующее сообщение об ошибке:
undefined reference to `std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >::basic_string(wchar_t const*, std::allocator<wchar_t> const&)'
Если я изменю APP_STL на stlport_static и определю _STLP_HAS_WCHAR_T, то все, кажется, компилируется / связывается / работает нормально.Я проверяю, работает ли он, загрузив exe-файл в эмулятор и запустив его через оболочку.
Мне понадобится использовать реализацию gnustl для поддержки исключений c ++, иначе я бы пошел с stlport_shared.Любые подсказки, почему приведенный выше пример работает для stlport_static, но не для gnustl_static?