2014-04-16 18 views
12

Hata ayıklama için bir OSG kodunu başarıyla derlemek ve çalıştırmak için projemi VS2012'de kurmaya çalışıyorum. Ayrıca OSG hata ayıklama kitaplıkları kullanıyorum. Derleme ve bağlantı sonu başarıyla ama ben ikili çalıştırdıktan sonra MSVCR120D.dll eksik olduğunu belirten bir hata alıyorum.VS2012 MSVCR120D.dll eksik

Bütün gün bu hataya bir çözüm arıyordum ve bu bana mantıklı gelmiyor, çünkü ben MSVCR110D.dll kullanması gereken VS2012 kullanıyorum. Ayrıca bu dll C:\Windows\System32'da yok, sadece MSVCR120.dll ve eski sürümleri var.

Projeyi sürüm modunda hata ayıklama dışı osg kütüphaneleri kullanarak derlemeye çalışırsam her şey yolunda ve normalde projeyi hatasız çalıştırabilirim.

Ben MFC ve Runtime Library ayarlarıyla oynamaya çalışıyor ama sadece serbest kütüphaneler hiç işe this soruya değinen.

Sürüm kitaplıkları ile çalışmayan Visual Leak Detector kullanmak istediğim için hata ayıklama kitaplıkları ile çalıştırmam gerekiyor. Bu kullanıyorum kodun bir parçası (OSG libs aynı VS2012 ile derlenmiş). öyleyse, VC12 (2013) kullanılarak derlenir kullanan kütüphanelerin

General settings of project C/C++ Code Generation submenu

+0

yükleyebilirsiniz. Yanlış ikili dosyaları kullanıyorsunuz. VS2013 üzerinde kullanılmak üzere inşa edildi. VS2012 ile uyumlu olanlara ihtiyacınız olacak. –

+0

OSG kütüphaneleri mi kastediyorsunuz? Bu garip çünkü osg lib'leri, şu an kullandığım VS2012 ile kendi başıma derledim. – Kalam

+0

VLD'ye sahip olduğum Noet de Release'de çalışıyor. Sadece Debug modunda çalışmanın sınırlı olduğunu düşünmüyorum. –

cevap

10

En az bir:

#include "stdafx.h" 
#include <windows.h> 

// osg libs 
#include <osgViewer/Viewer> 

int main(int argc, char **argv) { 
    osgViewer::Viewer viewer; 
    while (!viewer.done()) { 
    viewer.frame(); 
    } 
    return 0; 
} 

İşte hataya neden projemin ayarlarının ekran vardır ya onları yeniden derleyin (hangi kütüphanenin Dependency Walker kullanarak VC12'de derlendiğini görebilir veya MSVC 2013 yeniden dağıtılabilirlerini download from here

+3

MSVC2013 "MSVCR120D.dll" dosyasını eklemez, ancak yalnızca adı "D" olmadan lib oluşturur. Bağımlılık Walker'ı deneyeceğim ve göreceğiz ... Ve Hans'a üzüldüğümde, kendimle aynı VS2012 ... – Kalam

+7

ile derlediğim OSG kütüphanelerini kullanıyorum, "D" hata ayıklama bilgisi anlamına gelir. Kütüphaneler VS2013 üzerinde hata ayıklama için derlenmiş olmalıdır. –

+0

Evet, anladım. Ama gerçekten tuhaf, çünkü kodun (soruya eklenmiş) kısa bir bölümünü derledim, sadece kütüphanelerim, aynı VS2012 ile kendimce derlediğim kütüphaneler. Cmake/created projesinde kütüphaneleri hangi sürümde oluşturacağımı bir şekilde değiştirebilir miyim? Yapılandırma düğmesine tıkladıktan sonra Visual Studio 11'i seçiyorum, projeyi oluşturdum ve daha sonra hata ayıklamak, serbest bırakmak ve daha sonra da ispatı için derledim. Bunun, Visual Studio sürümüyle uyumlu proje kitaplıkları oluşturması gerektiğini düşündüm. – Kalam

İlgili konular