1

大きくなり始めたら、物を見つけやすくするために、いくつかの.cファイルを設定しようとしています。プログラムでSDL呼び出しを使用するので、インクルードします。

これが私のmain.cppが今どのように見えるかです:

#include <stdio.h>
#include <SDL.h>
#include <SDL_gfxPrimitives.h>
#include <SDL_ttf.h>
#include "WriteText.h"

int main(int argc, char *argv[])
{
int i =0;
i = b();

return 0;
}

私のWriteText.cには次のものがあります。

#include "WriteText.h"

int b(void)
{
return 3;
}

最後に私のWriteText.h:

#ifndef WRITETEXT_H_INCLUDED
#define WRITETEXT_H_INCLUDED

int b(void);

#endif // WRITETEXT_H_INCLUDED

コンパイルしようとすると、「b()」への未定義の参照が返されます。なぜこれが起こっているのかわかりません。いくつかの基本的なサンプルコードで練習しましたが、すべてがうまく機能しますが、実際に実用的なものに使用するとすぐに、このようなエラーが発生します。

4

3 に答える 3

4

問題は、を実行可能ファイルにリンクしていないことですWriteText.c。実行可能ファイルの作成方法についてさらに情報を提供していただければ、おそらくより良い支援が得られるでしょう。

于 2012-11-04T00:27:46.933 に答える
0

メインファイルは.cppで、CPPコンパイラを使用していました(SDLプロジェクトだったため)が、新しい.cppファイルを追加してコピーしたときに、追加した新しいファイルは.cで、Cコンパイラを使用していました。 -コードを貼り付けたところ、すべてがスムーズに機能しました。

(.cpp ファイルに C コードを記述するのが「悪い形式」かどうかはわかりませんが、SDL を使用するつもりなら、それが唯一の方法だと思います。)

于 2012-11-04T11:35:55.813 に答える
0

コンパイルで writetext オブジェクト ファイルが使用されていない可能性があります。*nix と gcc を想定すると、makefile は次のようになります。

all: myprog

myprog: myprog.o writetext.o
    gcc -o $@ $^

myprog.o: myprog.cpp

writetext.o: writetext.cpp
于 2012-11-04T00:31:14.270 に答える