问题标签 [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.

0 投票
3 回答
4958 浏览

android-ndk - Android NDK 中缺少 std::wstring 支持的解决方案?

我有一个游戏,它在数千个地方使用 std::wstring 作为其基本字符串类型,并使用 wchar_t 及其函数进行操作:wcsicmp() wcslen() vsprintf() 等。

问题是 R5c 不支持 wstring(撰写本文时的最新 ndk)。

由于国际化,我无法更改代码以使用 std::string 并且我会破坏许多游戏使用的游戏引擎......

我有哪些选择?

1 - 用我自己的字符串类替换字符串和 wstring

这会给我更好的平台独立性,但重新实现轮子是荒谬的。我已经开始使用字符串的 COW 实现。我需要它是 COW,因为我将它们用作 hash_maps 中的键。这当然需要大量的工作并且容易出错......但似乎这是我可以做的事情。

2 - 尝试使用我自己实现的 C 标准库的宽字符字符串函数(wcslen、mbstowcs ...)修复 NDK 重新编译 STLPort

这将是更可取的方式......但我不知道该怎么做:(

如何替换 libstdc++.a 或 libstlport_static.a 中的函数(比如说 wcslen)?(不确定它们在哪里:()

而且我不确定我需要重新实现哪些功能,我知道 wcslen 不起作用所以我想它们应该都是......

3 - 你有其他想法吗?

我等不及官方解决这个问题,如果我不知道如何做#2,我将不得不选择#1。

我在某处读到,如果您以 2.3 为目标,则可以使用 wstrings,但我应该以 Android 2.1 为目标。

PS:忘了说我当然需要使用STL,但没有RTTI,我可以毫无例外地生活。

提前致谢!

0 投票
1 回答
596 浏览

c++ - STLPort、英特尔编译器、构建错误(尽管应用程序运行良好!)

针对 STLPort 编译我的项目时,我得到了一些奇怪的构建错误。很奇怪,因为项目运行得很好(并且速度提高了 20-30%),尽管您认为构建错误将是致命的。

谁能告诉我我做错了什么以及如何让这些闭嘴?

(libiomp5md 来自英特尔的 openmp 支持,我在切换到 stlport 之前使用它,现在仍在使用 openmp 运行,所以不明白为什么应该改变)。

我的运行时库(在 C++ 代码生成设置中)设置为多线程。

提前致谢!

编辑:似乎 ipo 是程序间优化,抱怨它无法打开当前构建中未编译的库。可以理解,这些错误并不是致命的,而且我的输出仍然可以构建。不过,任何建议表示赞赏。

0 投票
3 回答
1444 浏览

c++ - 如何在我的内核中使用 STLPort?

我正在用 C++ 开发内核。但我不想写一个stdlib;为此我下载了STLport http://www.stlport.org/,但我不知道如何安装和使用它。

我正在使用 Linux 来构建我的内核。

如何在我的内核中使用 c++ 标准库?

而且我不想从 STLport 移植所有库。如何排除选择的库?像std::stringstd::vector

0 投票
2 回答
2662 浏览

boost - 无法使用 STLport 库构建 Boost

我正在使用 MSVC 7.1 在 Windows 上使用 STLport 5.2.1 构建 boost 1.48.0,这是我运行的命令行:

我的 user-config.jam 设置如下:

我收到几个与 STLport 相关的链接器错误。其中一个看起来像这样:

为什么我无法使用 STLport 构建 Boost?

0 投票
3 回答
705 浏览

c++ - stringstream 运算符选择问题

我有一个像这样的类构造函数:

我这样称呼它:

这是一个过于简单的例子,但本质上就是这样。这是我得到的确切编译器错误。请注意,由于某种原因,传入的结果对象是 basic_ostream,我不确定这是否正常。它无法像我的函数期望的那样将其转换为 std::stringstream 。

我在 Windows 上使用 VS2003 和 STLport。

有人知道我在这里哪里出错了吗?为什么这段代码不能编译?如果我缺乏信息,我会提前道歉。我将为那些要求更多信息的人更新我的问题。

0 投票
1 回答
834 浏览

c++ - 构建 STLPort 时出错

我正在尝试在我的项目中使用 STLPort,当我按照中的说明进行操作时,INSTALL.unixes会出现编译错误。

我跑了./configure,然后make,输出如下。我在 Ubuntu 上使用 make 3.81 和 gcc 4.6.1。

编辑:我尝试添加--with-extra-cxxflags="-std=c++ox"并得到一组不同且更小的错误,如下所示。

0 投票
0 回答
247 浏览

visual-studio-2010 - VS2010中的STLPort调试

你知道如何在 VS2010 中调试 STLPort 容器吗?我想调试它们,就像 STL 容器一样简单。

0 投票
2 回答
625 浏览

c++ - 修改名称后如何恢复到原始名称空间?

我正在使用一个名为 stlport 的库,它重新定义了std命名空间,如下所示:

因此,无论我在代码中尝试使用的任何位置std::something,它都会被替换为_STLP::something.

如果我注释掉该#define std STLPORT行,我的遗留项目的代码将无法编译(它依赖于 stlport)。

如果我不注释掉这一行,我试图添加的新库将无法编译,因为它使用std::的分配器集与 stlport 使用的分配器不同。类型冲突。

在包含新库之前,我已经尝试#define STLPORT std过一行,但是这个#define 似乎不起作用。

std一旦像这样重新定义正常,有没有办法使用它?

0 投票
1 回答
671 浏览

gcc - 使用 arm-linux-gcc 编译 STLPort 时出现未知错误

我试图用 uclinux 的交叉编译器工具链编译 STLPort。 根据 STLPort 库根文件夹中的 INSTALL,如果要添加新的工具链,则必须找到最近的工具链并针对您的编译器进行修改。 我选择 gcc.mak 并将 gcc 更改为 arm-linux-gcc 并将 c++ 更改为 arm-linux-c++。编译时出现此错误:

这是什么错误?如何在 arm-linux-gcc 上为 STLPort 制作适当的 Makefile?

编辑:错误已由第一个答案修复,但我有另一个错误:当我尝试编译代码时,makefile 让我得到这句话:
* 注意!*
此 makefile 尝试使用可能不适用于所有 glibc 风格的系统语言环境。如果构建失败,请求助于 gcc.mak,它将为 STLport 构建仅限 C 语言环境的版本,最后我得到了 c_local.c 的以下错误:

我认为这个错误与makefile的注意有关。我可以解决什么问题?什么是gcc.mak参加的度假胜地?

0 投票
2 回答
801 浏览

visual-c++ - Wince 5.0 使用 STLport void *operator new(size_t,void *)' 已经有一个主体

我正在做从 windows 到 wince 的转换工作。对于使用 iostream,我选择STLport5.2.1. 我在vs2008上收到编译错误:

am files (x86)\windows ce tools\wce500\athenapbws\mfc\include\wcealt.h(248) : error C2084: function 'void *operator new(size_t,void *)' has a body

2> D:\Program Files (x86)\Windows CE Tools\wce500\AthenaPBWS\include\ARMV4I../Armv4i/new(71) :参见之前的“新”定义

2>d:\program files (x86)\windows ce tools\wce500\athenapbws\mfc\include\wcealt.h(254) : error C2084: function 'void operator delete(void *,void *)' has a body

2> D:\Program Files (x86)\Windows CE Tools\wce500\AthenaPBWS\include\ARMV4I../Armv4i/new(73) :参见之前的“删除”定义

2>Util1.cpp 2>D:\Program Files (x86)\Windows CE Tools\wce500\AthenaPBWS\include\ARMV4I../Armv4i/new(72) : error C2084: function 'void *operator new(size_t,void *)' 已经有一个主体

2> d:\program files (x86)\windows ce tools\wce500\athenapbws\mfc\include\wcealt.h(247) : 参见之前的“新”定义

2>D:\Program Files (x86)\Windows CE Tools\wce500\AthenaPBWS\include\ARMV4I../Armv4i/new(74) : error C2084: function 'void operator delete(void *,void *)' already has身体

2> d:\program files (x86)\windows ce tools\wce500\athenapbws\mfc\include\wcealt.h(253) : 参见之前的“删除”定义

你怎么能解决这个错误?