试图将https://github.com/evilsocket/arminject集成到我的项目中,并且出现了一个奇怪的编译错误,该错误在Android Studio中独立编译时不会发生。我仍在学习C ++,并与其他建议参考std名称空间的人联系,但这似乎也无济于事。有什么建议吗?
C:\Users\TehPirate\AppData\Local\Android\Sdk\ndk\20.0.5594570\sources\cxx-stl\system\include\stl_pair.h:86:30: error: no template named 'pair'
This file is included from the following inclusion chain:
C:\Users\TehPirate\AndroidStudioProjects\Pokex\app\src\main\java\com\pirate\pokex\injectors\libhook\main.cpp:1
C:\Users\TehPirate\AndroidStudioProjects\Pokex\app\src\main\java\com\pirate\pokex\injectors\libhook\hook.h:5
C:\Users\TehPirate\AppData\Local\Android\Sdk\ndk\20.0.5594570\toolchains\llvm\prebuilt\windows-x86_64\sysroot\usr\include\c++\v1\string:505
C:\Users\TehPirate\AppData\Local\Android\Sdk\ndk\20.0.5594570\toolchains\llvm\prebuilt\windows-x86_64\sysroot\usr\include\c++\v1\string_view:176
C:\Users\TehPirate\AppData\Local\Android\Sdk\ndk\20.0.5594570\toolchains\llvm\prebuilt\windows-x86_64\sysroot\usr\include\c++\v1\__string:57
C:\Users\TehPirate\AppData\Local\Android\Sdk\ndk\20.0.5594570\toolchains\llvm\prebuilt\windows-x86_64\sysroot\usr\include\c++\v1\algorithm:643
C:\Users\TehPirate\AppData\Local\Android\Sdk\ndk\20.0.5594570\sources\cxx-stl\system\include\utility:36
hoot.h的片段
1 #ifndef HOOK_H
2 #define HOOK_H
3
4 #include <android/log.h>
5 #include <string>
6 #include <sys/types.h>
7 #include <dlfcn.h>
8 #include <unistd.h>
9 #include <string>
10 #include <vector>
11 #include "linker.h"
main.cpp的片段
1 #include "hook.h"
2 #include "hooks/io.h"
stl_pair.h的片段
85 template <class _T1, class _T2>
86 inline bool operator==(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y)
87 {
88 return __x.first == __y.first && __x.second == __y.second;
89 }
答案 0 :(得分:0)
该错误表明没有名为“ pair”的模板,这很容易解释。您将需要查看第85行上的模板的声明方式,并将其与调用方式进行比较
您的问题在第86行,请看此https://en.wikipedia.org/wiki/Template_(C%2B%2B)
模板非常适合用于创建可接收任何类型数据的函数,这就是我所假设的
答案 1 :(得分:0)
我实际上也发生了同样的问题。但是,在stl_pair.h中用pair
替换了std::pair
之后,问题解决了。
但是问题尚未完全解决。因为在这些c ++核心文件中发生了很多错误。
由此我得出结论。 NDK版本本身存在错误。
尝试使用其他版本的NDK