基本的な C++ プログラムでリンクの問題が発生しています。.cppいいえ、ファイルは含めません!
これが起こっていることです。
main.cpp:
#include "header.h"
#include <iostream>
int main() {
std::cout << "Hello!";
}
header.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>2 つの場合のいずれかで s を取り除くと、コンパイルcoutされます。どうしたの?コンパイルには g++ と NetBeans を使用しています。
コマンドラインで試しました:
g++ *.h *.cpp -o program
そして同じことが起こりました。