问题标签 [stlport]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - 支持 C++11 的开源 STL 实现
简而言之,我正在寻找 STLPort 的替代品。STLPort 已经有一段时间没有更新了(自 2008 年以来?)并且缺乏 C++11 支持。有谁知道任何替代方案?我需要为各种架构和各种目标操作系统使用各种工具链进行编译。
我将开始研究 GNU C++ 实现,看看它与 GCC 工具链的联系如何作为替代方案,并将返回结果。但是,如果有人在这里有任何前期知识,那就太好了。
对此的替代方案是实现各种关键的 C++11 STL 特性,如新的智能指针类型和 std::threads。最坏的情况下,我可能可以从 boost 中提取智能指针。就 pthread 或 Windows 线程而言,是否有任何 std::threads 实现?
谢谢
c++ - STL vs Stlport:哪个更轻量级
我一直在使用 stlport 开发基于 wince 的自定义操作系统,但从现在开始我正在考虑使用 windows 提供的 stl。我读到它们在功能上并没有什么不同,所以目前重要的是我的图像大小。不幸的是,我不能像首先使用 stl 并制作运行时映像然后使用 stlport,然后比较两个映像的大小那样尝试它们,因为我还有很多其他问题需要解决才能成功构建操作系统。因此,我想得到一个专家的想法:
你觉得哪一个会更轻量级?我知道 stlport 是如何连接、加载等的,但我不太确定 STL。我查看了 STL 标头,我看到的只是数以千计的内联函数。但仅此而已吗?我需要确定这一点。STL 是否链接内部的任何其他库,或者它只是包含标题并使用那些内联函数?
最好的
Ps:我正在使用VS2012并在wec2013上工作
Ps2:我知道 STL 和 stlport 代表什么以及如何使用它们来构建应用程序。我的实际问题是哪一个会消耗更少的内存,在 HDD 上使用更小的尺寸?(考虑到 stlport 是一个库,但 stl 不是等等)
android - STLport 和 Android NDK - STLport 作为静态加载,Linux/gcc ld 报告“多个定义”
我看过很多关于 Android NDK 和 STLport 的资料。我有复杂的应用程序,java+native 代码,它加载 STLport(一个 c++ 标准库端口)。原始代码库在项目的“jni”子目录中的 Application.mk 中有“APP_STL := stlport_static”。导致 ld 加载静态库。在当前的 SDK/NDK 中,这导致了许多编译失败。
根据建议,尝试作为动态库加载。(在“../jni/Application.mk”中,设置“APP_STL := stlport_shared”)有了这个,我得到一个干净的编译和加载,如果我禁用 checkJNI ,应用程序可以在 Android armeabi-v7a 模拟器上完美运行在“dalvik”虚拟机上。
但是一旦我启用 checkJNI,我会在 libapplication.so 上得到一个“unsatisfiedLinkError”,这看起来可能是由于 STLport 被动态加载造成的。所以,我想在静态模式下加载 STLport(logcat 在其他几个库成功加载后报告这个)。在构建过程中,编译是可以的,但是我得到了两个多重定义错误,特别是:“'vtable for std::bad_exception' 的多重定义”和 'std::exception::~exception()'。(我也尝试过使用“gnustl_static”)。
我正在使用 gcc 4.3.0 版并制作 3.81 版、命令行模式和围绕 build-ndk 的小型包装器,用于 android ndk-r9c,构建目标版本为 android-8,“ant”来构建 .apk 文件, 等等。
比我更熟悉 Android 的人(我是一个完全的菜鸟)可能以前见过这个。如果有,请指教。谢谢。- 罗斯
c++ - Boost 1.36 与 STLPort 4.6.2 编译错误
我正在尝试在 solaris 上使用 STLPort 4.6.2 构建 Boost 1.36,但出现以下错误,
请帮助理解问题,我该如何解决?
STLPort 4.6.2 是否支持 Boost?
用于构建的命令:
./tools/jam/src/bin.solaris/bjam --without-python stdlib=stlport-4.6.2 toolset=sun stage
c++ - 通过 Boost 使用多个 STLport 配置
我在 Windows CE 开发项目中使用Boost (1.54.0, bjam 2011.12.1. OS=NT) 和STLport (5.2.1)。我首先从一个单一的 Windows CE 平台 SDK 开始,一切都很顺利。但现在我需要支持几个 Windows CE 平台 SDK,每个 SDK 都有自己的系统头文件和编译标志。
首先,我为每个平台(比如 PLATFORM1 和 PLATFORM2)构建了 STLport,并将 STLport 库放到c:\lib\STLport-5.2.1\lib\PLATFORM1
了c:\lib\STLport-5.2.1\lib\PLATFORM2
.
然后,在user-config.jam
我有:
然后,对于 PLATFORM1,我通过运行带有标志的 bjam.exe 来构建 Boost 库stdlib=stlport-5.2.1~PLATFORM1
,而为 PLATFORM2 构建使用stdlib=stlport-5.2.1~PLATFORM2
.
但是 bjam 为 PLATFORM2 使用了错误的 STLport 库路径。例如,使用 -n 标志运行 bjam 会显示以下平台的链接命令(注意第二次调用中的错误 LIBPATH 参数):
基本上,它总是使用using stlport
user-config.jam 中的第一个指令,无论我将什么版本传递给 stdlib 参数。难道我做错了什么?设置环境以使用不同的 STLport 二进制文件构建 Boost 的正确方法是什么?
android - 出现错误:命名空间“std”中的“shared_ptr”未命名类型
我正在尝试在使用一些 C++ 代码的 android studio (ndk r10d) 中编译一个 android 应用程序。我需要 C++11,所以我添加了-std=gnu++11
(我需要gnu++11
而不是c++11
我正在使用的扩展)。我正在使用 stlport stl,因为我使用的其他库使用了这个 stl 库。所以我在 build.gradle 文件中的 cFlags 和 stl 参数看起来像这样:
我还包括内存:#include <memory>
尝试编译时收到此错误:
到目前为止,我一直在使用智能指针的 boost 实现,但是随着迁移到 c++11,我宁愿使用标准实现。
c++ - STLport c_str() 返回值不正确
我遇到了stlport STL 实现的问题。我将它用于 Android,尽管平台在这里可能不相关。我正在使用第三方共享库,它试图打开某些文件。该文件路径被传递给函数 as std::string
,然后是库内联函数:
然后将该 C 字符串用作open()
函数的参数。问题是使用stlport时,ReadProtoFromTextFile
函数接收到无效的 C 字符串,因此无法打开文件。那个无效的 C 字符串是确定性的,它总是这个字符序列:
p!&\xffffffe8.
当我尝试从我的代码中调用 c_str() 时,它总是有效的。我尝试使用 LLDB 查看有问题的字符串并收到此错误:错误:无法准备在目标中运行表达式
_M_buffers._M_end_of_storage
尽管如此,仍然可以检查该字符串的内部结构,并且字段中是否存在有问题的字符串序列。中也有正确的顺序_M_buffers._M_start_of_storage
。
当我切换到gnustl实现时,问题就消失了。LLDB 显示 .c_str() 没有任何问题。对我来说,这看起来像是一些内联问题,但它可能是什么?毕竟 stlport_shared是 Google 推荐的实现。
makefile - 链接 CXX 可执行文件 xxx:未定义的对 `stlp_std::cout' 的引用
我试图将现有c++
项目转换为CMake
. 现有的与makefile配合得很好,我已经成功地转换了类似的文件。但是当我尝试转换这个时,出现了一些令人困惑的错误,如下所示:
起初我认为它找不到iostream
,所以我包含iostream
在 / export1/chao/nanos/nano_clean/nano_clean/lib/STLport/stlport/ by using 'INCLUDE_DIRECTORIES'
,但它没有用。你能给我一些建议吗?我的 CMakeLists.txt 如下:
据original makefile
,我发现这个项目使用source file
encryption.cc
at ./
, header files
: encryption.h
at./
和其他 at ../common/include
。
android - 使用 stlport_static 将 gnustl 链接到 Android ndk 项目
在我的 Android.mk 和 Application.mk 中,我使用的是使用构建的静态库stlpot_static
,但我想使用 gnustl 而不是 stlport 来构建我的项目,因为我需要在我的项目中支持 c++11。早些时候,我APP_STL := stlport_shared
在我的项目中使用 Application.mk,并且我的项目运行成功。但是现在我想做它APP_STL := gnustl_shared
,项目编译成功,但它在运行时崩溃给我一个错误java.lang.UnsatisfiedLinkError: dlopen failed: cannot locate symbol "_ZNSt13_Filebuf_base12_M_page_sizeE"
,当我检查这个错误时,我在我的静态库中发现了这个依赖关系,它是使用 stlport_static 构建的。
如何在我的项目中使用 gnustl 而不会干扰依赖于 stlport_static 的静态库。
c++ - 使用 C++11 的 STLPort
我正在尝试将我的办公代码从 C++ 迁移到 C++11,并且我们大量使用 STLPorts。
有一个编译器宏 ( http://www.stlport.org/doc/configure.html ) - _STLP_LONG_LONG,在我们的代码中使用并且在 C++ 中运行良好。
但是,在 C++ 11 中,这是没有定义的。
我怎样才能解决这个问题?我尝试在互联网上搜索,但资源非常有限。
编辑:这是代码
据我所知,代码试图为给定平台找到一个 long long 类型。在 linux 上的 pre C++11 的情况下,g++ 转到指定的行。但是当我执行 g++ -std=c++11 ... 时,g++ 会跳过这一行并出现错误“系统上应该有歌曲 long long 类型!”