7

SDL 2 をインストールしたばかりですが、深刻な問題がいくつかあります。これは私のコードです:

#include <SDL2\SDL.h>

int main(int argc, char* argv[]) {
    SDL_Init(SDL_INIT_VIDEO);
    SDL_Quit();
    return 0;
}

タイトルに記載されているエラーが発生するため、コンパイルできません。

obj\Debug\main.o||In function SDL_main':|  
C:\Users\myuser\Desktop\test 2000\main.cpp|5|undefined reference to SDL_Init'|
C:\Users\myuser\Desktop\test 2000\main.cpp|7|undefined reference to SDL_Quit'|
c:\program files\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\..\..\..\libmingw32.a(main.o):main.c|| undefined reference to WinMain@16'|  
||=== Build finished: 3 errors, 0 warnings ===|
4

8 に答える 8

8

コンパイラ コマンドを投稿します。例: g++/gcc ....

おそらくライブラリをリンクしていません。

http://content.gpwiki.org/index.php/SDL:Tutorials:Setup IDE に含まれている lib へのパスが必要です。(コードブロックを使用しているようです)

リンカ設定に追加: -lmingw32 -lSDLmain -lSDL

http://www.sdltutorials.com/sdl-tutorial-basics

于 2013-06-11T16:42:46.177 に答える
2

私はこれに永遠に苦労しました。

sdl ファイルをプログラム ファイルからデスクトップまたはドキュメントなどに移動し、そこから C にリンクするだけです。

Cがそれらにアクセスすることを許可していないWindowsに関係があると考えてください。

これがクールに役立つことを願っています

于 2013-08-31T19:04:45.650 に答える
-2

MacOS の Eclipse で最初に作成したプロジェクトを Windows 10 の Eclipse CDT 1909 でビルドして実行しようとすると、同様の問題が発生しました。

minGW64 コンパイラを使用すると、次の手順が機能することがわかりました。

RMB プロジェクトをクリックし、プロパティを選択します。[Project Properties] > [C/C++ Build] で、LMB で [Manage Configurations] をクリックし、LMB で [New] をクリックして、新しい C/C++ ビルド構成を作成します。Debug_Windows という名前を付けて、[Copy Setting from] を [Default configuration] に設定し、アクティブにします。LMB をクリックして、[Configuration] を次のように設定します。 Debug_Windows.

[プロジェクト プロパティ] > [C/C++ ビルド] > [ビルダー設定] > [ビルド コマンド] > [現在のビルダー] を CDT 内部ビルダーに設定します。

プロジェクト プロパティ > C/C++ ビルド > ビルダー設定 > ツール チェーン エディター > 現在のツールチェーンを MinGW GCC に設定します。

[プロジェクト プロパティ] > [C/C++ ビルド] > [ビルダー設定] > [ツール チェーン エディター] > [現在のビルダー] を CDT 内部ビルダーに設定します。

次のパスを Project Properties > C/C++ Build > Settings > GCC C++ Compiler > includes "C:\Applications\Library\SDL2-2.0.9\x86_64-w64-mingw32\include\SDL2" に追加します

次のパスを Project Properties > C/C++ Build > Settings > GCC C++ Linker > Libraries "C:\Applications\Library\SDL2-2.0.9\x86_64-w64-mingw32\lib" に追加します

次のライブラリを [Project Properties] > [C/C++ Build] > [Settings] > [GCC C++ Linker] > [Libraries] に SLD2main SDL の順序で追加します。

[プロジェクト プロパティ] > [実行/デバッグ設定] に移動し、左クリックして [新規] をクリックし、[C/C++ アプリケーション] を選択します。左クリックして [OK] をクリックし、[C/C++ アプリケーション] フィールドに「Debug_Windows\project_name.exe」と入力します (project_name を正しい値に置き換えます)。

ビルド構成を Debug_Windows に変更します。

プロジェクトのプロパティを閉じます。

main 関数を含むファイルの先頭に、プリプロセッサ ディレクティブ #define SDL_MAIN_HANDLED を追加します。プリプロセッサ ディレクティブがないと、プログラムは正しくリンクされません。

プログラムを実行するには RMB プロジェクトをクリックし、Run as > Run Configurations を選択して、ビルド用に作成された実行構成を選択します。

SDL2.dll をプロジェクト ディレクトリ構造のトップ レベルにコピーします。これは、Debug または Debug_Windows ディレクトリにコピーされたかのように、プロジェクトがビルドされるたびに削除されます。

私が見つけた重要なポイントは、リンカ ライブラリに mingw32 を含める必要はなく、 #define SDL_MAIN_HANDLED は main を含むファイルの #include の前にある必要があるということです。

于 2019-11-28T15:55:54.087 に答える