1

コードブロックをいじって非常に単純なプログラムを書いているところですが、未定義の参照エラーが発生します...まったく同じコードを別の場所にコピーしてターミナルでコンパイルすると正常に動作しますが、動作しませんコードブロックで。

私のmain.cは:

#include <stdio.h>
#include "subfunc.h"

int main()
{
    printhello();
    return 0;
}

そして私のsubfunc.cは次のとおりです。

#include <stdio.h>
#include "subfunc.h"

void printhello(void)
{
    printf("hello world in function\n");
}

そして私のsubfunc.hは:

void printhello(void);

ありがとう

アップデート

実際に..私はそれを理解しました。subfunc.cファイルとsubfunc.hファイルを右クリックしてプロパティを選択し、[ビルド]タブに移動しましたが、ファイルとリンクファイルをコンパイルするためのオプションがオンになっていないことがわかりました。ありがとう

4

2 に答える 2

2

ここに画像の説明を入力してください
上の写真を見て、プロジェクトと比較してください。赤い色の円だけと比較してください。残りを無視します(残りは私のプロジェクト/割り当てです)my_subfunction.hに書き込みます

    #ifndef __MY_SUBFUNC_H__
    #define __MY_SUBFUNC_H__


    #include<stdio.h>
    void printhello(void);
    #endif

main.cで

#include <stdio.h>
#include "my_subfunc.h"

int main()
{
    printhello();
    return 0;
}

およびmy_subfun.c:-

#include <stdio.h>
#include "my_subfunc.h"

void printhello(void)
{
    printf("hello world in function\n");
}

これがお役に立てば幸いです。これは私にとってはうまくいったからです。

于 2012-04-16T05:52:13.533 に答える
1

未定義のエラーが何であるかを正確に述べていませんでしたが、それはあなたmain()またはprinthello()関数のいずれかに関係しているに違いありません。

main.cとsubfunc.cをコンパイルした後、プロジェクト内のオブジェクトファイルmain.objとsubfunc.objの両方をリンクしていることを確認してください。これは、構築している現在のプロジェクトにmain.cとsubfunc.cの両方が含まれていると仮定すると、コードブロックで自動的に発生するはずです。

于 2012-04-16T06:15:05.473 に答える