Code :: blocksを使用して複数のソースファイル(2つのCPPファイルとヘッダーファイル)を使用してプログラムをコンパイルしようとしています。例として、次の3つのファイルを作成しました(別のフォーラムで他の誰かが作成したプログラムの例)。
main.cpp:
#include <stdio.h>
#include "other.h"
int main (void)
{
printf("%d\n", getfavoritenumber());
return 0;
}
other.cpp
#include "other.h"
int getfavoritenumber(void)
{
return 3;
}
other.h
#ifndef _OTHER_H_
#define _OTHER_H_
int getfavoritenumber(void);
#endif
これらの3つのファイルshouldが相互にリンクしているにもかかわらず、プロジェクトをビルドしようとすると、「リンクステージがスキップされました(ビルドターゲットにリンクするオブジェクトファイルがありません)」というエラーが表示されます。
私は何が間違っているのですか?個々のファイルをコンパイルしようとすると、「そのファイルはどのターゲットにも割り当てられていません」というエラーが表示されます。
これが私のために働いたものです:
プロジェクトと表示されている左側のパネルに移動し、.cppファイルを右クリックします。プロパティを選択してから、ビルドに進みます。 「ターゲットに属する」という見出しの下にあるチェックボックスをオンにします:「デバッグ」と「リリース」
最初のマルチソースコードプロジェクトを作成したときに、同様の問題が発生しました。私はあなたが抱えている問題はリンクにあるのではなく、私にとっての#includeステートメントにあると思います。ディレクトリは私が期待したものとは異なっていました。プロジェクトにヘッダーファイルを含めるには、#include "include/other.h"
を作成する必要がありました。フォルダシステムがどのように構築されているかを確認してください。プロジェクトにあるフォルダ/ディレクトリを投稿できれば、できるかもしれません。より良い答えを与えるために。
これは私がしました:
Code :: BlocksにConsole Projectを作成しました
ファイルごとにFile|New
を実行して空のファイルを作成し、指定した名前でプロジェクトに追加して、質問の関連コードを各ファイルに貼り付けました。
結果の実行可能ファイルをコンパイルして実行しました。
すべてが期待どおりに機能しました。うまくいかない場合は、プロジェクトの作成方法を説明してください。 Code :: Blocksには絶対にプロジェクトが必要です-個々のファイルではうまく機能しません。それが必要な場合は、コマンドラインからGCCを使用してください。
編集:
一般に、コンパイラをCBとは別にインストールすることをお勧めします。CBは実際にはIDEにすぎません。ここではWindowsを使用していると想定しています。 http://tdm-gcc.tdragon.net に移動し、そこから最新のGCCコンパイラをダウンロードします。コマンドラインから動作することを確認してください。
次に、CBでSettings|Compiler and Debugger
に移動し、Toolchains executables
タブを選択します。次に、TDM GCCのものをインストールしたディレクトリのルート(ルート内のbinディレクトリではなくルート)に移動すると、すべて正常に動作するはずです。
そして、一日の終わりにこれが機能しない場合は、 http://forums.codeblocks.org でCBサポートフォーラムを試してください。
同様の問題が発生し、プロジェクトを閉じたばかりの場合、新しい空のコンソールアプリケーションを作成し、既存のファイルをインポートすると、正常にコンパイルされ始めました。
[プロジェクト]> [ファイルの追加...]または[プロジェクト]> [ファイルを再帰的に追加...]を使用して、すべてのファイル(.hおよび.cpp)がプロジェクトに追加されていることを確認します。