2016-04-09 31 views
0

Ben C++ (ve genel olarak programlama) oldukça yeni ve şu anda "SDL.h" başlığını Eclipse'de bir C++ projesine dahil etmeye çalışıyorum (kullanıyorum) minGW btw). Projeyi, başlık dosyalarına ve SDL kitaplığına giden yollarla sağladım. Ancak, ben özellikle "SDL.h" ve yapı aşağıdaki mesajı almak sonra projeyi dahil whenver: ". 'Başlatma SDL Basic.exe' var olmayan bir sorun Programı dosyası karşılaştı"SDL.h "Program dosyası mevcut değil"

Bunun, SDL.h dahilinde projeyi oluşturduğumda herhangi bir .exe dosyasının üretilmemesi gerçeğiyle ilgili olduğundan eminim. Ne anlamadığım, bunun olmasının nedeni. SDL_assert gibi başka bir SDL başlığını eklediğimde, bu bir sorun değil. Daha sonra, .exe dosyası her zamanki gibi oluşturulur ve program gerektiği gibi çalışır. [Buraya resim açıklaması girin] [1]

http://i.stack.imgur.com/cdV8U.jpg SDL.h dahil edildiğinde nasıl görünür.

http://i.stack.imgur.com/MW7PX.jpg SDL'den başka bir şey eklendiğinde nasıl görünür.

+0

Lütfen CDT Derleme Konsolu'ndan tam metni sağlayın. Görüntünüzde tanımlanmamış referans görüyorum, ancak resmin kenarından nasıl devam ettiğini merak ediyorum. Değişiklikler, SDL.h başlığının harici bir kütüphanede bağlantı kurmanızı gerektiren bir kod içinde çekmesidir, bu nedenle bağlantı işlemi başarısız olur. – Aenimated1

+0

Tamam, işte tam metin: http://imgur.com/XzKZruI –

cevap

0

Sorunu çözdüğüm anlaşılıyor. Ne zaman programı çalıştırdığımda konsol penceresi çıkarılır "Winmain @ 16 'ile tanımlanmamış referans". Bu yüzden, Google'ın SDL_main.h'deki kendi ana işlevini tanımladığını öğrendim. Bu, toplamda iki ana işlev verecek. Ben SDL.h dahil önce makro SDL_MAIN_HANDLED tanımlamak ve bakmak zorunda kendi ana fonksiyonunun tanımlanması SDL önlemek için, işe yaradı:

http://i.stack.imgur.com/mNOOE.jpg

birisi daha ayrıntılı olarak bu ben istiyorum gerçekten açıklamak durumunda bunu takdir et.

0

Biraz araştırma yaptım ve WinMain @ 16 için tanımlanmamış referansa benziyor çünkü SDL otomatik olarak uygulamanız için bir Windows giriş noktası oluşturuyor, ancak SDL uygulamasında bağlantı kurmak için gerekli kütüphaneleri sağlamadınız. Bu giriş noktası. Ancak, SDL işlevini kullanmayı düşünüyorsanız, bu giriş noktasına gerçekten ihtiyacınız vardır, çünkü muhtemelen kullanmak istediğiniz SDL özelliklerinden yararlanmak için gereken bazı önemli başlatma adımlarını gerçekleştirir.

SDL_MAIN_HANDLED'in tanımlanması kendi Windows giriş noktanızı (örn. WinMain) sağlamanıza izin veren bir mekanizmadır, ancak bu daha karmaşık bir yaklaşımdır (daha esnek olsa da). Bu sadece sorununuzu çözer, çünkü "ana" nin "SDL_main" olarak yeniden tanımlanmasını engeller; bu da .cpp dosyanızın artık SDL kitaplıklarından herhangi birini gerektirmediği anlamına gelir. Yani derler ve bağlantılar yapar, ancak aradığınız SDL işlevlerinden hiçbirine sahip olmazsınız.

Uygun kitaplıklarda bağlantı kurmanız gerekir. Bkz. here - yardımcı olabilecek bazı bilgiler sağlar.