G++ 链接错误:"未定义对"主要"的引用
g++ link error: 'undefined reference to 'main'
我有3个文件; main.cpp(包含main()),FileWriter.h和FileWriter.cpp。我在 Debian Jessie 上使用 g++(Debian 4.9.2-10 版本)。我的项目包含 '/root/dev/Practice/src/' 中的 .cpp 个文件,以及 '/root/dev/Practice/include/' 中的单个标头 (FileWriter.h)。两个目标文件的编译工作,但链接到可执行文件抱怨对main()的未定义引用,尽管我确实在"main.cpp中定义了看似有效的引用。
这是我的make文件的输出(位于根目录'/root/dev/Practice/'目录中):
g++ -c -g -Wall -o src/FileWriter.o src/FileWriter.cpp g++ -c -g -Wall -o src/main.o src/FileWriter.cpp g++ src/FileWriter.o src/main.o -o bin/Practice /usr/lib/gcc/i586-linux-gnu/4.9/../../../i386-linux-gnu/crt1.o: In function '_start'" /build/glibc-J1NNmk/glibc-2.19/csu/../sysdeps/i386/start.S:111: undefined reference to 'main' collect2: error: ls returned 1 exit status Makefile:10: recipe for target 'bin/Practice' failed
这是我的主文件的内容.cpp:
#include <string>
#include <iostream>
#include "/root/dev/Practice/include/FileWriter.h"
int main() {
std::cout << "Hello!" << std::endl;
FileWriter * fw = new FileWriter("foofile");
fw->AddLine("CRAP!");
fw->AddLine("NO!");
return 0;
}
My FileWriter.h:
#ifndef FILEWRITER_H_
#define FILEWRITER_H_
#include <string>
#include <iostream>
class FileWriter{
public:
FileWriter(std::string);
~FileWriter();
void AddLine(std::string);
private:
std::string fileLocation;
std::ofstream *filestream;
};
#endif /* FILEWRITER_H_ */
。和我的文件编写器.cpp:
#include "/root/dev/Practice/include/FileWriter.h"
#include <fstream>
// g++ linker error if 'inline' not included - why?
inline FileWriter::FileWriter(std::string fileName)
{
this->fileLocation = fileName;
const char * x = this->fileLocation.c_str();
this->filestream = new std::ofstream();
this->filestream->open(x, std::ios::out | std::ios::app);
}
inline FileWriter::~FileWriter()
{
this->filestream->close();
}
inline void FileWriter::AddLine(std::string line)
{
*this->filestream << line << std::endl;
}
这一行:
g++ -c -g -Wall -o src/main.o src/FileWriter.cpp
应该是:
g++ -c -g -Wall -o src/main.o src/main.cpp
我无法访问这个编译器,但在过去,如果你在C++文件中main()
,你需要用__cdecl
"装饰"它
int __cdecl main() {
试试看?或:
extern "C" int main() {
相关文章:
- 将对象数组的引用传递给函数
- 什么时候在C++中返回常量引用是个好主意
- 我想将一个对T类型的非常量左值引用绑定到一个T类型的临时值
- 何时在引用或唯一指针上使用移动语义
- 如何在c++中使用引用实现类似python的行为
- 编译C++时未定义的引用
- Ctypes wstring通过引用传递
- 从C++dll访问C#中的一行主要参数
- c++r值引用应用于函数指针
- 理解c++中的引用
- C++取消引用指针.为什么会发生变化
- 如何修复此错误:未定义对"距离(浮点数,浮点数,浮点数,浮点数,浮点数)"的引用
- 在制作中未定义对"主要"的引用
- (.text+0x20):对"主要"的未定义引用是什么意思
- 看起来如此主要的错误.cpp:(.text.startup+0xd6):未定义对"vtable for Counter"的引用?
- 一个奇怪的案例...对"主要"的未定义引用
- G++ 链接错误:"未定义对"主要"的引用
- 对"主要"的未定义引用
- 当主要存在时,对"主要"的未定义引用
- 创建引用和创建对象的主要区别是什么?