C++ 错误包括<;向量>;在Netbeans中(C+;+;)
这很奇怪。我因为包含C++ 错误包括<;向量>;在Netbeans中(C+;+;),c++,netbeans,vector,cygwin,C++,Netbeans,Vector,Cygwin,这很奇怪。我因为包含:(编辑:使用可以很好地工作,但我不想放弃向量) g++.exe-c-g-MMD-MP-MF build/Debug/Cygwin Windows/main.o.d-o build/Debug/Cygwin Windows/main.o main.cpp 来自MemoryScanner.h:11, 来自main.cpp:10: /usr/lib/gcc/i686 pc cygwin/3.4.4/include/c++/bits/stl_bvector.h:在成员函数“void
:(编辑:使用
可以很好地工作,但我不想放弃向量)
g++.exe-c-g-MMD-MP-MF build/Debug/Cygwin Windows/main.o.d-o build/Debug/Cygwin Windows/main.o main.cpp
来自MemoryScanner.h:11,
来自main.cpp:10:
/usr/lib/gcc/i686 pc cygwin/3.4.4/include/c++/bits/stl_bvector.h:在成员函数“void std::vector::_M_insert_range(std:_Bit_iterator,_ForwardIterator,_ForwardIterator,std::forward_iterator_tag)”中:
在/usr/lib/gcc/i686 pc cygwin/3.4.4/include/c++/vector:72中包含的文件中,
/usr/lib/gcc/i686 pc cygwin/3.4.4/include/c++/bits/stl_bvector.h:522:错误:在“(”标记之前应该有不合格的id
/usr/lib/gcc/i686 pc cygwin/3.4.4/include/c++/bits/stl_bvector.h:在成员函数“void std::vector::_M_fill_insert(std:_Bit_iterator,size_t,bool)”中:
/usr/lib/gcc/i686 pc cygwin/3.4.4/include/c++/bits/stl_bvector.h:823:错误:在“(”标记之前应为非限定id
来自MemoryScanner.h:11,
来自main.cpp:10:
/usr/lib/gcc/i686 pc cygwin/3.4.4/include/c++/bits/vector.tcc:在成员函数'void std::vector::_M_fill_insert(u gnu_cxx::u normal_迭代器,size_t,const Tp&'):
在/usr/lib/gcc/i686 pc cygwin/3.4.4/include/c++/vector:75中包含的文件中,
/usr/lib/gcc/i686 pc cygwin/3.4.4/include/c++/bits/vector.tcc:307:错误:在“(”标记之前应为非限定id
/usr/lib/gcc/i686 pc cygwin/3.4.4/include/c++/bits/vector.tcc:在成员函数“void std::vector::_M_range_insert”(u gnu_cxx::u normal_iterator,_ForwardIterator,_ForwardIterator,std::forward_iterator_tag):
/usr/lib/gcc/i686 pc cygwin/3.4.4/include/c++/bits/vector.tcc:384:错误:在“(”tokenmake[2]:离开目录“/cygdrive/k/Documents and Settings/Administrator/My Documents/NetBeansProjects/MemScan”之前应为非限定id
make[1]:离开目录“/cygdrive/k/Documents and Settings/Administrator/My Documents/NetBeansProjects/MemScan”
生成[2]:***[build/Debug/Cygwin-Windows/main.o]错误1
生成[1]:***[.build conf]错误2
make:**[.build impl]错误2
生成失败(退出值2,总时间:1s)
引用的行:
#include "MemoryScanner.h" // main.cpp:10
#include <vector> // MemoryScanner.h:12
#包括“MemoryScanner.h”//main.cpp:10
#包括//MemoryScanner.h:12
编辑:
MemoryScanner.h
#ifndef MEMORYSCANNER_H
#define MEMORYSCANNER_H
#include <vector>
#include <windows.h>
using namespace std;
struct memblock {
int address;
int value;
};
class MemoryScanner {
private:
HANDLE _hProc;
vector<memblock> _addresses;
public:
MemoryScanner(HANDLE hProc);
MemoryScanner(const MemoryScanner& orig);
void scan(int value);
void display();
virtual ~MemoryScanner();
};
#endif /* MEMORYSCANNER_H */
\ifndef MEMORYSCANNER\u H
#定义内存扫描程序
#包括
#包括
使用名称空间std;
结构内存块{
int地址;
int值;
};
类记忆扫描仪{
私人:
HANDLE_hProc;
矢量地址;
公众:
记忆扫描仪(处理hProc);
记忆扫描仪(常量记忆扫描仪和原始扫描仪);
无效扫描(int值);
void display();
虚拟~MemoryScanner();
};
#endif/*内存扫描程序*/
main.cpp
#include <iostream>
#include <windows.h>
#include "MemoryScanner.h"
using namespace std;
int main(int argc, char** argv) {
HWND hWnd = FindWindow(0, "Calculator");
if (hWnd == 0) {
cout << "Could not retrieve window handler" << endl;
} else {
DWORD pid;
GetWindowThreadProcessId(hWnd, &pid);
HANDLE hProc = OpenProcess(PROCESS_ALL_ACCESS, false, pid);
if (!hProc) {
cout << "Could not open process" << endl;
} else {
MemoryScanner* scanner = new MemoryScanner(hProc);
int value;
cout << "Enter value: ";
cin >> dec >> value;
scanner->scan(value);
scanner->display();
}
}
return 0;
}
#包括
#包括
#包括“MemoryScanner.h”
使用名称空间std;
int main(int argc,字符**argv){
HWND HWND=FindWindow(0,“计算器”);
如果(hWnd==0){
cout扫描(数值);
扫描仪->显示();
}
}
返回0;
}
可能MemoryScanner.h定义了一个宏,该宏恰好与vector头使用的名称匹配。您看过vector和stl_bvector.h中的代码行了吗
在包含特定于项目的头文件之前,我尝试先包含系统头文件和外部库头文件,以便在出现问题时,编译器更有可能指向我有权更改的文件。/Facepalm。我只需要从
main.cpp
中删除\include
,因为它已经包含在备忘录中ryScanner.h
我们能看看你是如何在代码中使用向量的吗?从MemoryScanner.hc发布一些代码,我们可以知道编译器错误的其余部分吗?@Gio Borje:为什么有这么多编译器选项?看起来你的问题是那些…而不是代码本身:-W编译器选项有什么问题吗?我今天刚得到了Netbeans,并按照教程使用了cygwin作为它的编译器。
#include <iostream>
#include <windows.h>
#include "MemoryScanner.h"
using namespace std;
int main(int argc, char** argv) {
HWND hWnd = FindWindow(0, "Calculator");
if (hWnd == 0) {
cout << "Could not retrieve window handler" << endl;
} else {
DWORD pid;
GetWindowThreadProcessId(hWnd, &pid);
HANDLE hProc = OpenProcess(PROCESS_ALL_ACCESS, false, pid);
if (!hProc) {
cout << "Could not open process" << endl;
} else {
MemoryScanner* scanner = new MemoryScanner(hProc);
int value;
cout << "Enter value: ";
cin >> dec >> value;
scanner->scan(value);
scanner->display();
}
}
return 0;
}