【发布时间】:2011-02-14 22:09:31
【问题描述】:
我似乎无法编译/链接以下琐碎的代码,并且该问题似乎特定于 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 的任何线索?
【问题讨论】:
标签: android android-ndk