我遇到了与基本 C++ 程序的链接问题。不,我不包括.cpp
文件!
这就是正在发生的事情。
主.cpp:
#include "header.h"
#include <iostream>
int main() {
std::cout << "Hello!";
}
标头.h:
#ifndef _HEADER_H
#define _HEADER_H
class Something {
public:
printContents();
};
#endif
某事.cpp:
#include "header.h"
#include <iostream>
Something::printContents() {
cout << "This class's Contents!!";
}
发生的事情是我得到一个编译器错误:一些标准 C 函数的多个定义,例如strtod
:
g++ -o ... main.o
build/....main.o:在函数“strtod”中:../MinGW/bin/../lib/gcc/mingw32/3.4.5/../../../../include/stdlib.h:318:“strtod”的多重定义
build/..something.o:...something.cpp:(.text+0x0): 首先在这里定义 collect2: ld 返回 1 退出状态
如果我#include <iostream>
在两种情况之一中摆脱并摆脱cout
s,它将编译。这是怎么回事?我正在使用 g++ 和 NetBeans 进行编译。
我在命令行中尝试过:
g++ *.h *.cpp -o program
同样的事情也发生了。