我收到此错误消息:
multiple definition of `GamepadControll::GamepadControll()'
在沮丧了几个小时之后,我将代码缩减为:
GamepadControll.h:
#ifndef GAMEPADCONTROLL_H_
#define GAMEPADCONTROLL_H_
#include <iostream>
class GamepadControll {
public:
GamepadControll();
virtual ~GamepadControll();
};
#endif /* GAMEPADCONTROLL_H_ */
游戏 handle 控制.cpp:
#include "GamepadControll.h"
GamepadControll::GamepadControll() {
std::cout << "Hello, I work!" << std::endl;
}
GamepadControll::~GamepadControll() {
// TODO Auto-generated destructor stub
}
但我只是收到此错误消息!
//编辑: Main 未定义。我不能像在 Java 中那样只运行一个没有主文件的类吗?这是整个 eclipse 项目:http:/ul.to/m37d2z
最佳答案
大多数多重定义符号错误情况往往是由将代码包含到两个不同的编译单元中引起的。
您确定没有将 GamepadControl.cpp
包含到您的其他源文件中吗?
例如,您的文件和 main.cpp
都持有:
#include "GamepadControll.h"
int main (void) { return 0; }
g++ main.cpp GamepadControll.cpp
没有错误。如果我将第一行更改为:
#include "GamepadControll.cpp"
并使用相同的命令编译,我得到:
/tmp/ccbu52oq.o: In function `GamepadControll::GamepadControll()':
GamepadControll.cpp:(.text+0x0): multiple definition of
`GamepadControll::GamepadControll()'
我能想到的唯一其他可能性是,如果您明确包含代码文件两次。使用上面的 main.cpp
的无错误版本,我仍然在使用时遇到错误:
g++ main.cpp GamepadControll.cpp GamepadControll.cpp
如果这两种情况都不是,您最好的办法是提供您的情况的完整详细信息。这意味着每个源文件(包括主文件)、您正在使用的编译和链接命令以及环境(例如,Linux 下的 gcc3,Windows 上的 Code::Blocks)。
关于c++ - `GamepadControll::GamepadControll()'的多重定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1961086/