2010-07-30 10 views
5

Tek Çözümde, iki VC++ projem var. Proje bir proje B. tarafından derlenen obj dosyalardır bağlayıcı girişine sahiptirVC++ 2008 projesi her zaman "güncel değil"

Visual Studio (2008) hep "eskimiş" olduğunu projesi A söylüyor ve bunu yeniden oluşturmak isteyip istemediğini sormak için beni ister , her zaman çalıştırmak istiyorum/debug/build/etc. Çözümün tamamını oluşturduktan hemen sonra bile: Başarılı bir tam yapı yapıyorum ve sonra Yeniden Oluştur'a tıkladıktan sonra, Project A'yı yeniden bağlamak istiyor.

Bunun olmasını nasıl engelleyebilirim? Burada neler olduğunu anlayan var mı?

cevap

2

Çözümün, diğer projeden .obj dosyalarını kullanmayı bırakmak olduğunu düşünüyorum. Bunun yerine, hem A hem de B projelerinde ortak olan kodu kendi statik kütüphanesine C katın ve A ve B'yi ona bağlayın.

+0

Sadece şunu anlayabilirsem ** kabul etmeliyim. ** neden .obj'nin kullanılması beklendiği gibi çalışmıyor. – feuGene

+0

@ user406289: Çözümünüzün A ve B arasında bir bağımlılık var mı? Belki de projeleri kötü düzende mi yapıyorsunuz? – wilx

+0

Evet, Çözümde tanımlanmış bir bağımlılık var ve ayrıca B'nin B'den önce oluşturması gereken Yapı Sırası'nda da doğruladım. – feuGene

2

Visual Studio 2010 (hem SP1 hem de SP1 olmadan) ile bu sorunu yaşadım ve Ted Nugent sayesinde düzeltmeyi başardım. Hile, projede listelenen tüm C++ başlık dosyalarının var olup olmadığını kontrol etmek ve mevcut olmayanları kaldırmaktır. Görünüşe göre bu derleyici bir hatadır. Benzer bir şey olsaydı,

+0

Bağlantınızı doğru okursa, bu sorun VS2010'a özgüdür. C++ projelerinin, VS2008'de olmayan VS2010'da msbuild ile oluşturulduğu gerçeğine benziyor. – feuGene

+1

Bir hayat kurtarıcısın! VS2010 sorununu çözmeye çalışırken bu yazıya rastladım. Mükemmel çalıştı! – ShadowChaser

1

Sistem zamanını kullanan kodla çalışıyordum ve hata ayıklama sırasında oldukça fazla bir şeyle uğraşıyordum. Bir şekilde dosyaların bazı zaman damgaları var. Derlemede, hangi dosyaların yeniden derlendiğini gösterir, bu yüzden her birini açtım, bir değişikliği zorladım (boşluk ekle, bir alanı sil) ve sonra yeniden kaydedildi.

Eski unix'e benzer "dokunma".

Bir projede, bunun içerdiği dosyalar için aynısını yapmak zorundaydım. Ama böyle dosyalara 'dokunmadan' sonra, sorun ortadan kalktı.