1

C ファイルに SDL2/SDL.h をインクルードすると、 " undefined reference to WInMain@16 "エラーが発生し続けます。これは、SDL インクルードを使用した単純な「Hello」プログラムであり、SDL インクルードを削除すると、正常にコンパイルされます (予想どおり)。

問題は、私が C (および SDL) のコンパイル フラグを初めて使用することであり、ファイルをリンク (?) する方法 (またはそれが必要な場合) がわからないことです。Sublime Text 3 を使用してコーディングしているため、IDE を使用するときのように SDL をリンクする方法がわかりません。

(D:\CODE\Privata Projekt\C\test.c)
#include <stdio.h>
#include "SDL2/SDL.h"

int main(int argc, char *argv[]) {
    printf("hello\n");
    return 0;
}

MinGW と SDL2 への私のパスは次のとおりです。

C:\MinGW\include\SDL2 (all my sdl header files reside in here too)
C:\MinGW\include\SDL2\bin
C:\MinGW\include\SDL2\lib
C:\MinGW\include\SDL2\share

そして、私はプログラムを構築します

gcc test.c -o test

編集: 私にとってうまくいったのは、これらのフラグをまったく同じ順序で使用することでした

   -lmingw32 -LC:\MinGW\include\SDL2\lib -lSDL2main -lSDL2
4

1 に答える 1

1

ライブラリとのリンクも必要です。コマンドラインで正しいオプションを渡すことでそれを行うことができます:-Lライブラリを見つける場所をリンカに伝え、-l(小文字の L) ライブラリにリンクするようにリンカに伝えます。

お気に入り

> gcc test.c -o test -LC:\MinGW\include\SDL2\lib -lSDL2

(ライブラリの名前がわからないのでSDL2、適当な名前に変更してください。)


ローダーが SDL2 ライブラリを見つけられないためにプログラムの実行に問題がある場合は、動的ライブラリの場所をリンカーに伝える別のオプションを追加する必要がある場合があります。

> gcc test.c -o test -LC:\MinGW\include\SDL2\lib -Wl,-rpath=C:\MinGW\include\SDL2\lib -lSDL2

ただし、Windowsで必要なのか、それとも使用されているのかはわかりません。実行可能ファイルがあるディレクトリに DLL をコピーする必要がある場合があります。

于 2013-09-19T15:10:20.773 に答える