C++ make:**[Lab1]错误1
我已经阅读了所有内容,并且在我的主方法中返回了0 我尝试过切换解析器,但也不起作用。我尝试过内部构建,但没有成功(即使成功了,我也希望使用makefile) 下面是给出的错误示例。我相信这就是阻止我创建二进制文件的原因,而二进制文件是运行我的应用程序所必须的 错误图像链接-> 这里是控制台位。我进行了刷新,然后构建C++ make:**[Lab1]错误1,c++,eclipse,makefile,binaries,C++,Eclipse,Makefile,Binaries,我已经阅读了所有内容,并且在我的主方法中返回了0 我尝试过切换解析器,但也不起作用。我尝试过内部构建,但没有成功(即使成功了,我也希望使用makefile) 下面是给出的错误示例。我相信这就是阻止我创建二进制文件的原因,而二进制文件是运行我的应用程序所必须的 错误图像链接-> 这里是控制台位。我进行了刷新,然后构建 23:52:19 **** Build of configuration Debug for project Lab1 **** make all Building file: .
23:52:19 **** Build of configuration Debug for project Lab1 ****
make all
Building file: ../src/Run.cpp
Invoking: GCC C++ Compiler
g++ -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"src/Run.d" -MT"src/Run.d" -o "src/Run.o" "../src/Run.cpp"
Finished building: ../src/Run.cpp
Building file: ../shared-src/EndToken.cpp
Invoking: GCC C++ Compiler
g++ -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"shared-src/EndToken.d" -MT"shared-src/EndToken.d" -o "shared-src/EndToken.o" "../shared-src/EndToken.cpp"
Finished building: ../shared-src/EndToken.cpp
Building file: ../shared-src/ErrorToken.cpp
Invoking: GCC C++ Compiler
g++ -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"shared-src/ErrorToken.d" -MT"shared-src/ErrorToken.d" -o "shared-src/ErrorToken.o" "../shared-src/ErrorToken.cpp"
Finished building: ../shared-src/ErrorToken.cpp
Building file: ../shared-src/Token.cpp
Invoking: GCC C++ Compiler
g++ -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"shared-src/Token.d" -MT"shared-src/Token.d" -o "shared-src/Token.o" "../shared-src/Token.cpp"
Finished building: ../shared-src/Token.cpp
Building file: ../server-src/server-token/SToken.cpp
Invoking: GCC C++ Compiler
g++ -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"server-src/server-token/SToken.d" -MT"server-src/server-token/SToken.d" -o "server-src/server-token/SToken.o" "../server-src/server-token/SToken.cpp"
Finished building: ../server-src/server-token/SToken.cpp
Building file: ../server-src/server-token/StartSToken.cpp
Invoking: GCC C++ Compiler
g++ -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"server-src/server-token/StartSToken.d" -MT"server-src/server-token/StartSToken.d" -o "server-src/server-token/StartSToken.o" "../server-src/server-token/StartSToken.cpp"
Finished building: ../server-src/server-token/StartSToken.cpp
Building file: ../server-src/Message.cpp
Invoking: GCC C++ Compiler
g++ -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"server-src/Message.d" -MT"server-src/Message.d" -o "server-src/Message.o" "../server-src/Message.cpp"
Finished building: ../server-src/Message.cpp
Building file: ../server-src/Server.cpp
Invoking: GCC C++ Compiler
g++ -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"server-src/Server.d" -MT"server-src/Server.d" -o "server-src/Server.o" "../server-src/Server.cpp"
Finished building: ../server-src/Server.cpp
Building file: ../server-src/User.cpp
Invoking: GCC C++ Compiler
g++ -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"server-src/User.d" -MT"server-src/User.d" -o "server-src/User.o" "../server-src/User.cpp"
Finished building: ../server-src/User.cpp
Building target: Lab1
Invoking: GCC C++ Linker
g++ -o "Lab1" ./src/Run.o ./shared-src/EndToken.o ./shared-src/ErrorToken.o ./shared-src/Token.o ./server-src/server-token/SToken.o ./server-src/server-token/StartSToken.o ./server-src/Message.o ./server-src/Server.o ./server-src/User.o
./shared-src/Token.o:(.rodata._ZTV5Token[_ZTV5Token]+0x20): undefined reference to `Token::getNextToken(char*)'
./shared-src/Token.o:(.rodata._ZTV5Token[_ZTV5Token]+0x28): undefined reference to `Token::processToken(char*)'
collect2: error: ld returned 1 exit status
make: *** [Lab1] Error 1
23:52:20 Build Finished (took 904ms)
从图中可以看到,Lab1没有二进制文件,它显示了make错误
由于男士的评论找到了解决方案
我把这段代码作为对这个问题的评论的参考
/*
* Token.h
*
* Created on: Sep 12, 2013
* Author: cam
*/
#pragma once
class Token {
public:
Token();
virtual ~Token();
enum TOKEN_TYPE {START, MIDDLE, END, ERROR};
/**
* @pre processToken must be ran first!
*/
virtual Token getNextToken(char*);
virtual bool processToken(char*);
};
/*
*Token.cpp
*
*创建日期:2013年9月12日
*作者:cam
*/
最终,我没有在基类中包含两个虚拟方法定义。虽然这使它得以编译,但我很好奇为什么这是必要的,因为它们被定义为虚拟的。最终,我的基类中没有包含两个虚拟方法定义。虽然这使它得以编译,但我很想知道为什么这是必要的,因为它们被定义为虚拟的。请从“控制台”选项卡复制文本,并编辑您的问题以包含完整且未编辑的错误消息。这里的那个只是说构建过程失败了,没什么。嘿,我已经包括了你问的内容。谢谢,我对C++非常陌生。当错误只是简单地声明我的项目名称时,您建议我将其留在那里?在哪个文件中实现了
Token::getNextToken(char*)
和Token::processToken(char*)
?给我们看看代码。好的,现在开始编译。我在上面注释掉的两个方法中添加了方法定义。我希望Token是一个抽象基类,而且这两个方法都是虚拟的。我有必要定义它们吗?如果看不到适用的代码,很难说。请从“控制台”选项卡复制文本,并编辑您的问题以包含完整且未编辑的错误消息。这里的那个只是说构建过程失败了,没什么。嘿,我已经包括了你问的内容。谢谢,我对C++非常陌生。当错误只是简单地声明我的项目名称时,您建议我将其留在那里?在哪个文件中实现了Token::getNextToken(char*)
和Token::processToken(char*)
?给我们看看代码。好的,现在开始编译。我在上面注释掉的两个方法中添加了方法定义。我希望Token是一个抽象基类,而且这两个方法都是虚拟的。我有必要定义它们吗?如果看不到适用的代码,很难说。virtual
只是意味着如果使用指向子类的基指针并调用函数,它将调用子类中的函数。既然您提到了将类抽象化,那么您可能想要的是一个纯虚拟函数。virtual
只意味着如果您使用指向子类的基指针并调用该函数,它将调用子类中的函数。既然您提到了将类抽象化,那么您可能想要的是一个纯虚拟函数。
#include "Token.h"
Token::Token() {
}
Token::~Token() {
}
Token Token::getNextToken(char* buff) {
}
bool Token::processToken(char * buff) {
}