我今天在尝试编译C ++项目时遇到了两个不同的问题。
有时它不会反映我在新版本中的任何更改:如果我更改输出中的某些措辞或更改实际功能并编译并点击“开始调试”,它的行为将与我进行更改之前的行为完全相同。点击清理或重建解决方案修复了这个问题,但编译它需要大约一分钟。我猜它没有检测到任何变化,但在输出窗口中,我看到它列出了我所做的文件的文件名更改...
每当我尝试使用头文件或在类之外定义函数时,我也会得到很多“......已在main.obj中定义”错误(每个函数和变量一个)。重命名函数让它编译一次,但第二次编译将再次出现错误。如果我只是在.cpp文件中定义类,不使用头文件,并且不使用类之外的任何函数,它就有用了。
该项目是我前几天下载的一个开源程序(我正在构建一个机器人来控制它)。直到今天我才遇到第一个问题,但第二个问题一直在发生。我所做的就是添加一个文件(如果你同时计算Bot.cpp和Bot.h两个文件); Bot.cpp包含Bot.h和程序中的一些文件,程序的main.cpp包括Bot.cpp。
我想发布一些代码,但我发现我所做的事情并没有错。我想知道我是否需要对现有文件做些什么? (我曾经打开它的项目中包含VS解决方案文件,因为VS Express无法帮助您从现有代码创建项目。)
//Bot.h
#ifndef _Bot_h_
#define _Bot_h_ 1
#include <string>
class Bot{
private:
uint32 inputs = 0;
bool active = false;
public:
Bot(){};
~Bot(){};
void Start();
void Stop();
void Run();
void Wait(int seconds);
void Press(int buttons);
};
#endif
//Bot.cpp
#ifndef _Bot_cpp_
#define _Bot_cpp_ 1
#include "main.h"
//Some other project files included between these
#include "Bot.h"
using namespace std;
void Bot::Start(){
if (active == false){
active = true;
Run();
}
}
void Bot::Stop(){
active = false;
}
void Bot::Run(){
while (active == true){
printf("Has my code updated?\n");
Wait(2);
}
}
//There are more functions defined here
#endif
我在原始源代码中真正完成的工作包括在main.cpp文件中包含列表底部的Bot.cpp,然后添加一个调用来创建类。我对C / C ++有点不熟练所以也许这很简单。我也很擅长写这样的帖子,所以如果有任何需要澄清我会尽力帮助。