La sortie complète est ce (juste une erreur), et la libération construit ne semblent pas rencontrer le même problèmeLinker: « __fltused » est défini multiplier si je ne pas utiliser un flotteur dans le programme
SDL2.lib(SDL_stdlib.obj) : error LNK2005: __fltused already defined in LIBCMTD.lib(fltused.obj)`
J'ai recompilé SDL2.lib avec/MTd et comme une bibliothèque statique, et je me suis assuré que c'était la seule bibliothèque de son nom sur mon système.
il devient bizarre que: Mettre une opération en virgule flottante partout dans mon programme lui permet de relier sans problème:
int main(int argc, char * argv[]) {
return 0; // will not link
}
int main(int argc, char * argv[]) {
float flt = 0.0f; // gets around optimization
return int(flt); // will link
}
Ce n'est pas idéal bien sûr, ce qui pourrait être la question sous-jacente?
Ceci est un signe que vous liez à plus d'une version des bibliothèques d'exécution C. Vous avez dit que vous avez recompilé SDL2.lib avec/MTd; avec quoi votre application est-elle compilée? Il devrait être compilé avec/MTd, aussi. –
@CodyGray - aye, SDL2 et mon exécutable sont tous les deux/MTd pour le débogage,/MT pour la sortie, j'ai triplé puisque cela semble être la raison la plus courante –
C'est vraiment la seule chose que ça * peut * être. Le CRT est ce qui définit le symbole '__fltused'. Est-ce que vous liez dans * n'importe quel autre fichier LIB qui a pu être compilé avec une version différente des bibliothèques d'exécution? –