问题标签 [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.
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,我可以毫无例外地生活。
提前致谢!
c++ - STLPort、英特尔编译器、构建错误(尽管应用程序运行良好!)
针对 STLPort 编译我的项目时,我得到了一些奇怪的构建错误。很奇怪,因为项目运行得很好(并且速度提高了 20-30%),尽管您认为构建错误将是致命的。
谁能告诉我我做错了什么以及如何让这些闭嘴?
(libiomp5md 来自英特尔的 openmp 支持,我在切换到 stlport 之前使用它,现在仍在使用 openmp 运行,所以不明白为什么应该改变)。
我的运行时库(在 C++ 代码生成设置中)设置为多线程。
提前致谢!
编辑:似乎 ipo 是程序间优化,抱怨它无法打开当前构建中未编译的库。可以理解,这些错误并不是致命的,而且我的输出仍然可以构建。不过,任何建议表示赞赏。
c++ - 如何在我的内核中使用 STLPort?
我正在用 C++ 开发内核。但我不想写一个stdlib
;为此我下载了STLport
http://www.stlport.org/,但我不知道如何安装和使用它。
我正在使用 Linux 来构建我的内核。
如何在我的内核中使用 c++ 标准库?
而且我不想从 STLport 移植所有库。如何排除选择的库?像std::string
等std::vector
。
boost - 无法使用 STLport 库构建 Boost
我正在使用 MSVC 7.1 在 Windows 上使用 STLport 5.2.1 构建 boost 1.48.0,这是我运行的命令行:
我的 user-config.jam 设置如下:
我收到几个与 STLport 相关的链接器错误。其中一个看起来像这样:
为什么我无法使用 STLport 构建 Boost?
c++ - stringstream 运算符选择问题
我有一个像这样的类构造函数:
我这样称呼它:
这是一个过于简单的例子,但本质上就是这样。这是我得到的确切编译器错误。请注意,由于某种原因,传入的结果对象是 basic_ostream,我不确定这是否正常。它无法像我的函数期望的那样将其转换为 std::stringstream 。
我在 Windows 上使用 VS2003 和 STLport。
有人知道我在这里哪里出错了吗?为什么这段代码不能编译?如果我缺乏信息,我会提前道歉。我将为那些要求更多信息的人更新我的问题。
c++ - 构建 STLPort 时出错
我正在尝试在我的项目中使用 STLPort,当我按照中的说明进行操作时,INSTALL.unixes
会出现编译错误。
我跑了./configure
,然后make
,输出如下。我在 Ubuntu 上使用 make 3.81 和 gcc 4.6.1。
编辑:我尝试添加--with-extra-cxxflags="-std=c++ox"
并得到一组不同且更小的错误,如下所示。
visual-studio-2010 - VS2010中的STLPort调试
你知道如何在 VS2010 中调试 STLPort 容器吗?我想调试它们,就像 STL 容器一样简单。
c++ - 修改名称后如何恢复到原始名称空间?
我正在使用一个名为 stlport 的库,它重新定义了std
命名空间,如下所示:
因此,无论我在代码中尝试使用的任何位置std::something
,它都会被替换为_STLP::something
.
如果我注释掉该#define std STLPORT
行,我的遗留项目的代码将无法编译(它依赖于 stlport)。
如果我不注释掉这一行,我试图添加的新库将无法编译,因为它使用std::
的分配器集与 stlport 使用的分配器不同。类型冲突。
在包含新库之前,我已经尝试#define STLPORT std
过一行,但是这个#define 似乎不起作用。
std
一旦像这样重新定义正常,有没有办法使用它?
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参加的度假胜地?
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) : 参见之前的“删除”定义
你怎么能解决这个错误?