即使像这样简单的代码也会出错
string test= "hello";
string part = test.substr(2, 3);
无效参数候选者是:STLpmtx_std::basic_string,STLpmtx_std::allocator> substr(?, ?)
即使转换为 size_t 也无济于事 字符串部分 = test.substr((size_t)2, (size_t)3);
但是当在 Linux 上使用 gcc 4.6 作为控制台应用程序运行时,这两段代码都可以正常工作。 但是当使用 Androind NDK 时,它给了我错误。
如果我在编辑器中关闭文件并关闭 Eclipse,然后打开 Eclipse 并构建它编译的项目。但如果我打开文件,它就会抛出错误。
我在 Application.mk 生成文件中使用 APP_STL:= STLport_static
是的,我确实包含了
编辑:我刚刚查看了 .so 文件的时间,即使 Eclipse 显示错误,它似乎仍在编译。
最佳答案
我找到了解决方案,我需要在项目属性的路径和符号部分中包含 STLport 系统包含文件夹 -> C/C++ General
path_To_NDK/sources/cxx-stl/system/include
我只有
path_To_NDK/sources/cxx-stl/stlport/stlport
关于Android NDK Eclipse CDT 不允许我使用字符串的 substr 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18040424/