J'ai le code ci-dessous que les liens et fonctionne très bien en mode 32 bits -VS2008 Lien Erreur L'utilisation SafeInt3.hpp en mode 64bit
#include "safeint3.hpp"
typedef SafeInt<SIZE_T> SAFE_SIZE_T;
SAFE_SIZE_T sizeOfCache;
SAFE_SIZE_T _allocateAmt;
Où safeint3.hpp est la version actuelle qui se trouve sur Codeplex SafeInt. Pour ceux qui ne le savent pas, safeint est une classe modèle qui rend le travail avec différents types et tailles d'entiers "sûrs". Pour citer la vidéo de canal 9 sur le logiciel - "il écrit le code que vous devriez".
Ce qui est mon cas. J'ai une classe qui gère un grand cache d'objets en mémoire (> 6gb) et je suis très soucieux de m'assurer que je n'ai pas de problèmes de débordement/débordement sur mes pointeurs/tailles/autres variables entières. Dans cette utilisation, il résout beaucoup de problèmes.
Mon problème vient quand on passe du mode de développement 32 bits au mode de production 64 bits. Lorsque je construis l'application dans ce mode, je reçois des avertissements de l'éditeur de liens suivants -
1>cachecontrol.obj : warning LNK4006: "bool __cdecl IntrinsicMultiplyUint64(unsigned __int64 const &,unsigned __int64 const &,unsigned __int64 *)" ([email protected]@[email protected]) already defined in ImageInRamCache.obj; second definition ignored
1>cachecontrol.obj : warning LNK4006: "bool __cdecl IntrinsicMultiplyInt64(__int64 const &,__int64 const &,__int64 *)" ([email protected]@[email protected]) already defined in ImageInRamCache.obj; second definition ignored
Même si je comprends que je peux ignorer l'erreur, je voudrais (a) empêcher l'avertissement de se produire ou (b) faites-le disparaître pour que mon département QA ne le signale pas comme un problème. Et après avoir passé du temps à faire des recherches, je ne peux pas trouver un moyen de le faire non plus.
j'ajouté en ligne à la fois IntrinsicMultiplyUint64 (ligne 1643) et IntrinsicMultiplyInt64 (ligne 1651) et qui a résolu mon problème. Merci. En regardant le code, il n'est pas évident pourquoi parce que mon "intellesense" me dit que ces lignes ne sont pas compilées. Donc, je suis encore un peu confus, mais mon programme fonctionne maintenant, alors merci –