5

これは私が取り組んでいる実際のコードではありませんが、私が間違っていることを理解するために書いたサンプルコードです。したがって、 main.cppfavourite.cpp、およびfavourite.hの 3 つのファイルがあります。main.cpp をコンパイルしようとしていますが、奇妙なエラーが発生します。

// main.cpp ファイル

#include <iostream>
#include "favourite.h"

using namespace std;

int main()
{
    favNum(12);

}

// お気に入り.cpp ファイル

#include "favourite.h"
#include <iostream>

using namespace std;

void favNum(int num)
{
    cout << "My Favourate number is " << num << endl;
}

// favourite.h ファイル

#ifndef FAVOURITE_H
#define FAVOURITE_H

void favNum(int num);

#endif

このすべてのファイルは同じフォルダーにあり、通常はg++ main.cppのようにコンパイルしています。カスタム ヘッダー ファイルを使用しているため、別の方法でコンパイルする必要があるかどうかはわかりません。

4

2 に答える 2

5

これがコマンドライン全体である場合g++ main.cpp、エラーはリンカーエラーであり、見つかりませんfavNumよね?その場合は、次を試してください。

g++ main.cpp favourite.cpp

または分割コンパイルとリンク:

g++ -c main.cpp -o main.o
g++ -c favourite.cpp -o favourite.o
g++ main.o favourite.o

ここで-cの意味: コンパイルのみ、リンクなし-ofilename。出力を 2 つの異なるオブジェクト ファイルに書き込み、最後のコマンドでそれらをリンクするために必要です。

追加のフラグを追加することもできます。最も重要なものは次のとおりです。

-Wall -Wextra -O3
于 2013-09-15T06:46:28.217 に答える
0

ああ、エラーが表示されたと思いますが、質問に含める必要がありました。

複数のソース ファイルをコンパイルするときは、GCC コマンド ラインでそれらをすべてリストする必要があります。または、Makefile を使用できます。

だからあなたはこれを行うことができます:

g++ favourite.cpp main.cpp

または、次のような Makefile を作成することもできます。

all: program
program: main.o favourite.o

次に、次のように入力します。

make
于 2013-09-15T06:47:26.360 に答える