2012-02-05 5 views
0

Par défaut, Visual Studio compile un projet pour utiliser la DLL multithread, trouvée dans l'environnement d'exécution Visual Studio. Je veux compiler mon programme en utilisant seulement/MT au lieu de/MD. Accordé, que la plupart des systèmes ont déjà installé ceci, et il est également disponible comme re-distribuable.Compilation d'un programme sans la DLL multithread (Visual C++ 2010)

Quand je change/MD/MT, je reçois une erreur:

MSVCRTD.lib(MSVCR100D.dll) : error LNK2005: _free already defined in LIBCMT.lib(free.obj)

Et quatre ou cinq erreurs similaires. Pour essayer de résoudre ce problème, j'ai supprimé LIBCMT.LIB des bibliothèques par défaut.

je puis obtenir l'erreur:

libcpmt.lib(_tolower.obj) : error LNK2019: unresolved external symbol __calloc_crt referenced in function __Getctype

Suppression MSVCRTD.lib de la liste par défaut conduit à des erreurs similaires? Il convient de noter que: - Il s'agit d'un projet OpenGL utilisant la bibliothèque glfw. -J'utilise la bibliothèque d'images SOIL de lonesock pour le chargement de la texture.

+1

Quels sont vos paramètres de construction? Parce que MSVCRTD est la version de débogage de MSVCRT. – Bart

+1

duplication possible de [Résoudre LNK4098: defaultlib 'MSVCRT' conflits avec] (http://stackoverflow.com/questions/3007312/resolving-lnk4098-defaultlib-msvcrt-conflicts-with) –

Répondre

3

Sans plus d'informations précises, je dirais que votre premier problème est que vous mélangez des versions de librairies et de déboguages. MSVCRTD.lib est la version de débogage de MSVCRT.lib. Soit vous avez des paramètres de débogage qui traînent dans vos propres projets, soit vous établissez des liens avec les versions de débogage des bibliothèques que vous utilisez.

Ne jamais mélanger les versions de débogage et de version. Si vous êtes chanceux, vous obtenez une erreur comme celle-ci. Dans certaines situations rares, tout semble fonctionner comme par magie jusqu'à ce qu'il ne fonctionne pas.

Questions connexes