如下代码使用stlport_static出错 std::map<std::string, int> myMap = { {"apple", 1}, {"banana", 2}, {"orange", 3} };
时间: 2023-07-19 20:04:44 浏览: 52
出错的原因可能是你的代码中使用了 `std::initializer_list`,而 `stlport_static` 不支持该特性。`std::initializer_list` 是 C++11 引入的语言特性,用于初始化容器和数组等对象。如果你使用的是较旧的 STL 实现,可能不支持这个特性。
解决方法有两种:
1. 升级 STL 实现。如果你使用的是较旧的 STL 实现,可以考虑升级到支持 `std::initializer_list` 的版本,比如 GNU STL 或者 libc++ 等。
2. 改变初始化方式。如果你无法升级 STL 实现,可以改变容器的初始化方式,例如:
```cpp
std::map<std::string, int> myMap;
myMap["apple"] = 1;
myMap["banana"] = 2;
myMap["orange"] = 3;
```
或者使用 `std::make_pair` 函数:
```cpp
std::map<std::string, int> myMap;
myMap.insert(std::make_pair("apple", 1));
myMap.insert(std::make_pair("banana", 2));
myMap.insert(std::make_pair("orange", 3));
```
相关问题
stlport_static 出错
`stlport_static` 是一个静态库,通常用于在编译时静态链接到您的项目中。如果您遇到了 `stlport_static` 的错误,可能是因为您的编译器找不到该库文件或者您的项目中没有正确引用该库文件。
要解决这个问题,您可以尝试以下步骤:
1. 确认您的编译器是否支持使用 `stlport_static` 库,如果不支持,您需要使用其他 STL 库或者升级您的编译器。
2. 确认您是否正确地配置了编译器的库路径,以便它可以找到 `stlport_static` 库文件。
3. 确认您是否正确地链接了 `stlport_static` 库文件到您的项目中。您可以在项目的编译选项中添加 `-lstlport_static` 或者在代码中使用 `#pragma comment(lib, "stlport_static.lib")` 来链接该库。
如果以上步骤都无法解决问题,您需要进一步检查您的编译器和项目设置,以确定问题的根本原因。
Unity 编辑器使用代码导出Android Export Project 并用命令行执行Il2Cpp编译
在Unity编辑器中,可以通过以下步骤导出Android Export Project:
1. 在菜单栏中选择 File -> Build Settings。
2. 选择 Android 平台,并点击 Switch Platform。
3. 点击 Player Settings,进入项目设置页面。
4. 在 Player Settings 中,选择 Other Settings 选项卡,然后找到 Export Project 选项。
5. 勾选 Export Project 选项,并指定导出路径。
6. 点击 Build,等待项目导出完成。
完成导出后,可以使用以下命令行来执行Il2Cpp编译:
1. 打开命令行工具,并进入导出项目的根目录。
2. 进入项目的 libs/armeabi-v7a 目录,可以看到 libil2cpp.so 文件。
3. 在 libs/armeabi-v7a 目录下创建一个名为 il2cpp_cache 的空目录。
4. 使用以下命令行执行 Il2Cpp 编译:
```
"<Unity安装目录>/Editor/Data/PlaybackEngines/AndroidPlayer/Tools/il2cpp/il2cpp.exe" \
--platform=android \
--architecture=armv7 \
--sdk-version=<SDK版本号> \
--libil2cpp-static \
--output-dir=<输出目录> \
--cachedirectory=il2cpp_cache \
--additional-include-directories="<Unity安装目录>/Editor/Data/PlaybackEngines/AndroidPlayer/Tools/stlport/stlport" \
--generatedcppdir=il2cppOutput \
--compile-cpp \
--development \
--runtime-version=<Unity版本号> \
--metadata-version=24 \
--no-symbol-map \
--strip-engine-symbols \
--enable-stacktrace \
--llvm-config="<Unity安装目录>/Editor/Data/PlaybackEngines/AndroidPlayer/NDK/toolchains/llvm/prebuilt/<平台>/bin/llvm-config" \
--linker-flags="-llog -rdynamic" \
"<导出项目根目录>/libs/armeabi-v7a/libil2cpp.so"
```
其中,需要替换以下参数:
- `<Unity安装目录>`: Unity 编辑器的安装目录。
- `<SDK版本号>`: Android SDK 的版本号。
- `<输出目录>`: 编译后的输出目录。
- `<Unity版本号>`: 使用的 Unity 版本号。
- `<平台>`: 选择对应的平台,如 windows-x86_64。
执行成功后,会在 `<输出目录>` 中生成相应的编译结果。