我似乎无法编译/链接以下微不足道的代码,问题似乎特定于std::wstring和gnustl_static C++库。非常感谢任何帮助。
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上传到模拟器并通过shell运行它来验证它的工作情况。
我需要使用gnustl实现来支持c++异常,否则我会选择stlport_shared。任何关于为什么上述示例适用于stlport_static但不适用于gnustl_static的线索吗?