LNK2038: inadéquation détectée pour "RuntimeLibrary": la valeur "MT StaticRelease" ne correspond pas à la valeur "MD DynamicRelease" dans le fichier.obj

je suis à Intégrer Matlab,C et Cuda ensemble dans un projet. J'ai utilisé Matlab mix pour connecter la fonction mx matlab écrite en c à la bibliothèque d'exécution cuda, une erreur de lien apparaît sur le conflit dans la version statique et la version dynamique entre le fichier c et la bibliothèque. Quelqu'un peut-il résoudre ce problème?

error LNK2038: mismatch detected for 'RuntimeLibrary': value 'MT_StaticRelease' doesn't match value 'MD_DynamicRelease' in file.obj. 
32
demandé sur rwong 2015-03-05 23:22:30

4 réponses

la bibliothèque et votre projet doivent être liés avec les mêmes paramètres en ce qui concerne la bibliothèque C Runtime.

dans votre cas, l'une était liée à la dll (/MD) et l'autre était liée statiquement (/MT).

Vous avez juste besoin de s'assurer que les deux match et cette erreur va aller loin.

43
répondu tux3 2015-03-05 20:29:40

Cette erreur peut se produire lorsque vous êtes statique relier votre projet à une bibliothèque (généralement un fichier avec .lib extension) mais les paramètres de linker dans votre projet Visual Studio sont définis à dynamiquement lien (ce qui signifie que le lien se produira pendant l'exécution, habituellement avec un .dll fichier).

Pour définir qui vous devez le projet d'utiliser la liaison statique de démarrage Visual Studio. Dans le L'Explorateur De Solutions pane, clic droit sur le projet nom, et sélectionnez Propriétés. Développez propriétés comme indiqué dans la figure ci-dessous: C/C++ --> Génération De Code --> Bibliothèque D'Exécution, sélectionnez Multi-threaded (/MT) option du menu déroulant. enter image description here

22
répondu Rahav 2017-05-06 17:28:24

à des fins de partage.

j'utilise la version 2017 VS qui ouvre et exécute avec succès une ancienne solution 2008. Maintenant, si pour une raison quelconque, même si vous changez toutes vos bibliothèques et votre projet principal pour avoir le même param de bibliothèque d'exécution (sous Propriétés, voir les affiches ci-dessus) mais vous recevez toujours le même message d'erreur, essayez d'ouvrir chaque individu .fichier vcxproj. Rechercher sous "RuntimeLibrary" et faire en sorte que leur valeur soit la même dans tous les fichiers vcxproj. Pour une raison quelconque, ces les fichiers vcxproj ne se mettent jamais à jour à la même valeur que celle indiquée dans les paramètres de propriétés et je dois les modifier manuellement dans le vcxproj.

en option, si vous le souhaitez, ouvrez les fichiers vcproj et changez leur "RuntimeLibrary" pour être les mêmes. Ici, la valeur est dans les chiffres.

3
répondu GWKit 2017-11-29 02:26:39

cela fonctionnerait mieux comme un commentaire à GWKit mais je n'ai pas la réputation pour cela. Il mentionne devoir mettre à jour les fichiers vcxproj parce qu'ils ne changent pas réellement. Dans mon cas, ils n'ont enregistré qu'après avoir frappé "saveAll" et ensuite fermer visual studio. J'ai reçu un message me demandant si je veux enregistrer les modifications des propriétés qui ont été enregistrées et après avoir cliqué sur Oui les fichiers vcxproj ont été correctement mis à jour.

0
répondu Jonah Simon 2018-07-17 20:40:45