2014-04-16 14 views
12

Sto tentando di configurare il mio progetto in VS2012 per compilare ed eseguire correttamente un codice OSG per il debug. Sto anche usando le librerie di debug di OSG. Compilazione e collegamento terminano correttamente ma dopo aver eseguito il file binario viene visualizzato un errore che indica che manca MSVCR120D.dll.VS2012 MSVCR120D.dll manca

Stavo cercando una soluzione a questo errore tutto il giorno e non ha senso per me, perché sto usando VS2012 che dovrebbe usare MSVCR110D.dll. Inoltre non ho questo dll in C:\Windows\System32, c'è solo MSVCR120.dll e le sue versioni precedenti.

Se provo a compilare il progetto in modalità di rilascio utilizzando le librerie osg non-debug, tutto funziona correttamente e normalmente posso eseguire il progetto senza errori.

Facendo riferimento alla domanda this stavo cercando di giocare con le impostazioni MFC e Runtime Library ma solo le librerie di rilascio funzionano del tutto.

Ho bisogno di eseguirlo con le librerie di debug perché voglio usare Visual Leak Detector che non funziona con le librerie di rilascio. Questo è parte del codice che sto usando (le librerie OSG sono compilate con lo stesso VS2012).

#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; 
} 

Ecco gli screenshot delle impostazioni del mio progetto che causa l'errore:

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

+0

Stai usando solo i binari errati, ey sono stati creati per essere usati su VS2013. Avrai bisogno di quelli compatibili con VS2012. –

+0

Intendi le librerie OSG? È strano, perché ho compilato osg libs da solo con lo stesso VS2012, che sto usando ora. – Kalam

+0

Noet che ho anche VLD che funziona in Release. Non penso che sia limitato a funzionare solo in modalità debug. –

risposta

10

Almeno una delle biblioteche che si sta utilizzando viene compilato utilizzando VC12 (2013), in modo da o ricompilali (puoi vedere quale libreria è compilata su VC12 usando Dependency Walker o installa i redistributables MSVC 2013 download from here

+3

MSVC2013 Non aggiunge il 'MSVCR120D.dll', ma solo la lib senza la" D "nel suo nome. Proverò Dependency Walker e vedremo ... E come triste per Hans, sto usando le librerie OSG che ho compilato da solo con lo stesso VS2012 ... – Kalam

+7

la "D" sta per informazioni di debug, quindi uno delle librerie devono essere state compilate per il debug su VS2013. –

+0

Sì, ho capito. Ma è davvero strano, perché sto compilando una parte così breve del codice (aggiunta in questione), dove sono solo le librerie, che ho compilato da me con lo stesso VS2012. Posso in qualche modo cambiare nel progetto cmake/generato per quale versione creerà le librerie? Dopo aver fatto clic sul pulsante di configurazione, seleziono Visual Studio 11, generi progetto e poi lo compilo solo per il debug e il rilascio e dopo tutto. Ho pensato che questo dovrebbe creare librerie di progetti compatibili con la mia versione di Visual Studio. – Kalam