Linuxとは対照的に、Windowsで開発を開始できるように、すべてを機能させるのに多くの問題を抱えています。これは、コーディング時に通常使用するものです。 SDLプログラムをコンパイルしようとすると、かなり奇妙な問題が発生します。 SDLライブラリを含めるとすぐに、プログラムはコンパイルを拒否し、次のエラーが発生します。
c:/mingw/bin/../lib/gcc/mingw32/4.6.2/../../../libmingw32.a<main.o>: In function 'main':
C:\MinGW\msys\1.0\src\mingwrt/../mingw/main.c:73: undefined reference to 'WinMain@16'
collect2: ld returned 1 exist status
コンソールでMinGWを使用しています。
例を挙げると、
gcc -o test main.c
これは正常にコンパイルされます:
#include <stdio.h>
#include <stdlib.h>
int main(int argv, char **argc)
{
printf("Hello, world!\n");
return 0;
}
しかし、#includeを追加するとすぐに(SDL関数が呼び出されていなくても)上記のエラーが発生します
使用:
gcc -o test main.c -lSDL
これはコンパイルに失敗します:
#include <stdio.h>
#include <stdlib.h>
#include <SDL/SDL.h>
int main(int argv, char **argc)
{
printf("Hello, world!\n");
return 0;
}
どんな助けでも大歓迎です!これは主な機能を忘れている人によくある問題だと読みましたが、明らかに私の問題ではありません。また、Windowsのグラフィカルプログラムを扱うときに使用される主な機能はWinMainであると聞きましたが、これまでWindowsで開発を進めていたときは、これが問題になることはありませんでした。
このエラーに関する詳細情報を少し検索したところ、 このページ が見つかりました。これには次の情報が含まれています。
これをコンパイルするための唯一のトリックは、インクルードパス(例:-I ../ SDL/include)、リンカーパス(例:-L ../ SDL/lib)を追加し、最後にライブラリを追加することです。正しい順序で自分自身。使用する:
-lmingw32 -lSDLmain -lSDL
また、IDEが(リンクしたい他のライブラリに加えて)自動的に追加しない場合は、-mwindowsフラグを追加することを忘れないでください)。それらを正しい順序で指定すると、シンボルWinMain @ 16が欠落していることを訴えるリンカーエラーが発生します。
上記のフラグを使用して再コンパイルしてみて、それが違いを生むかどうかを確認してください。