2016-03-29 23 views
1

OpenGL, GLFW, C/C++ kullanarak bir oyun yazdım. SOIL ve irrKlang gibi üçüncü parti kütüphaneleri kullanıyorum. Microsoft Visual 2015 kullanıyorum. Hem hata ayıklama hem de yayın sürümü, görsel stüdyosunda çalışıyor. Özellikler -> C++ -> Kod Üretimi-> Çalışma Zamanı Kitaplığı Seçtiğim/MDd. Diğer ayarları denedim, ancak sürüm sürümü başka hiçbiriyle çalışmaz. Tüm .dll dosyaları sürüm ve hata ayıklama klasörlerine kaydedilir. Bununla birlikte, sürüm klasörüme gidip orada bulunan .exe'yi kopyalayıp yapıştırdığımda masaüstümde artık çalışmıyor. IrrKlang.dll eksik olduğunu belirten bir mesaj alıyorum. Birisi oyunumun bağımsız bir .exe'sini nasıl çalıştıracağımızı ve çalıştırmayı açıklayabilir mi?Masaüstümden çalıştırabildiğim visual studio 2015 ile bir .exe nasıl oluşturulur

+0

'ne other' herhangi çalışmak olmaz mı? PC'ler? – Cameron

+0

Genellikle gitmenin yolu, tüm bağımlılıkları kuracak olan yükleyiciyi oluşturmak ya da onları sürücünüze aldığınızdan emin olmaktır, çünkü tüm LOT'lerini exe'ye yerleştirmek iyi bir fikir değildir. – cerkiewny

cevap

3

Burada iki şey var. İlk olarak, .exe uygulamanızın giriş noktasını içeren yürütülebilir dosyadır. Yani bu gerçekten ihtiyacınız olan ilk parça. Ancak, uygulamanıza statik olarak bağlı olmayan, ancak dinamik olarak bağlı olan kodlara bağlı olarak izin verilir - dinamik olarak bağlantılı kod yalnızca çalışma zamanında yüklenir. Bu çalışma zamanı kod kitaplıkları DLL'ler ("dinamik olarak bağlantılı kitaplıklar") olarak adlandırılır.

Uygulamanız bir DLL'ye bağlıysa, çalışıyorken look for that DLL olacaktır. Bulamazsa, eksik bir DLL ile ilgili bu ileti kutusunu görürsünüz. Bu nedenle, sadece .exe dosyasını kopyalamanız gerekmiyor, fakat tüm .dlls 'e bağlı (ve bağlı oldukları). Uygulamanızın birçok varsayılan sistem DLL'sine, ör. kernel32, ancak bunların her zaman .exe'nin yanında kopyalanmasına gerek yoktur çünkü bunlar her zaman sistem arama yolunda bulunur.

Şimdi, ikinci kısım. Uygulamanızı Visual Studio'nun yüklü olmadığı bir bilgisayarda çalıştırmak istiyorsanız, bilgisayarın C/C++ çalışma zamanlarının VS2015 araç zincirinin otomatik olarak kurulan bağlantılara bağlandığından emin olmanız gerekir. Bunlar, kopyaladığınız DLL dosyaları değil; daha ziyade, tüm uygulamalar için PC üzerinde küresel olarak yükleyen bir redistributable installer var. Bunu kendi yükleyicinizle birlikte gönderebilirsiniz.

Bunun çalışması için, Release'de yalnızca /MD ile bağlantı kurmak istiyorsunuz (hata ayıklama CRT yalnızca hata ayıklama içindir ve yalnızca Visual Studio yüklü olduğunda yüklenir; bu, bilgisayarınızın dışında çalışacak şekilde tasarlanmamıştır).

+0

Ayrıca bunları sisteme yükleyebilir ve sık kullanılan paketler (eklemeye değer olduğunu düşündükleri) halinde sistem dizinlerine bakabilirsiniz. – cerkiewny

+0

Yardımlarınız için teşekkür ederiz. Masaüstümde bir klasör oluşturdum ve yapıştırdım.Bu klasöre exe, ayrıca .dll dosyasını aynı klasöre yapıştırdım. Ben çalıştırdığımda, uygulama artık eksik bir dll hakkında şikayet etmiyor. Böylece bu bölüm çözüldü! Bunun yerine, şimdi başka bir hatayla karşılaşıyorum, ama bu başka bir soru ..... – LegItJoe

0

Bu ifade:.

"ayıklama ve görsel stüdyodan ok sürümü çalıştırmak serbest Hem özelliklerinde -> C++ - G/MDd seçilmiş> Kod çiftlerin oluşumu> Runtime Library ben diğer ayarları ancak serbest bırakılmasını çalıştım. sürüm başka hiçbiriyle çalışmaz. "

Belki de üçüncü parti kütüphanelerinizin bir sürümünün sürümüne sahip olmadığınızı düşünmeme izin verir.

/MDd, uygulamanızın MS çalışma zamanının hata ayıklama sürümünü kullanmasına neden olur; bu, projenizdeki bir şeyin veya bir hata ayıklama sürümü olarak oluşturulduğu anlamına gelir.

Yürütülebilir dosya ve DLL'lerin bağımlılıklarını görmek için 'depends.exe' uygulamasını kullanıyorum. Microsoft tarafından doğrudan sağlanıyordu, ancak şimdi üçüncü bir tarafça destekleniyor gibi görünüyor. Eski SDK'lar buna sahip olacak.

http://www.dependencywalker.com/

İlgili konular