Externes non résolus en C++ lors de l'utilisation de vecteurs et de trouver
J'ai essayé ce code dans un tout autre projet, et cela fonctionne très bien (la seule différence étant que le projet qui n'est pas le travail, c'est d'être exportée sous forme d'une DLL). Voici le code:
RTATMATHLIB.CPP
#include "stdafx.h"
#include "RTATMATHLIB.h"
#include <math.h>
#include <vector>
#include <algorithm>
#include <stdexcept>
using namespace std;
double someFunc(double** Y, int length)
{
vector<double> myVector;
for(int i = 0; i < length; i++)
{
double value = (*Y)[i];
vector<double>::iterator it = find(myVector.begin(), myVector.end(), value);
if(it != myVector.end())
{
continue;
}
else
{
myVector.push_back(value);
}
}
return 0;
}
RTATMATHLIB.H
__declspec(dllexport) double someFunc(double** Y, int length);
ERREURS
Error 1 error LNK2019: unresolved external symbol __imp___CrtDbgReportW referenced in function "public: __thiscall std::_Vector_const_iterator<double,class std::allocator<double> >::_Vector_const_iterator<double,class std::allocator<double> >(double *,class std::_Container_base_secure const *)" (??0?$_Vector_const_iterator@NV?$allocator@N@std@@@std@@QAE@PANPBV_Container_base_secure@1@@Z) RTATMATHLIB.obj RTATMATHLIB
Error 2 fatal error LNK1120: 1 unresolved externals
Et c'est tout. Je ne suis pas sûr de savoir pourquoi cela fonctionne dans l'autre projet et non pas sur celui-ci...
- Je devine qu'il y a un débogage d'exécution problème. Quels sont les paramètres de votre projet? Tous les avertissements?
- Je suis assez novice en C++ et je ne suis donc pas sûr que les paramètres que vous voulez dire? Je m'excuse d'avance pour mon ignorance. Mais il n'y a pas d'avertissements.
- quel compilateur que vous utilisez?
- Visual Studio 2008
- assurez-vous que le haut que la petite liste déroulante dit de "Libération" et non pas "Debug". Aussi, si vous êtes juste de faire les programmes C++, lorsque vous créez un Nouveau Projet, assurez-vous de sélectionner la bulle qui dit "Projet Vide" dans les options (j'en vois stdafx.h dans vos en-têtes de liste, qui est généralement utilisé dans les applications Windows).
Vous devez vous connecter pour publier un commentaire.
J'ai trouvé un autre post sur un forum, où quelqu'un semble avoir signalé le même problème que vous rencontrez. Veuillez vérifier si vous avez
définie dans les paramètres de votre projet (sous C/C++ -- Preprocessor) ou quelque part dans votre code (ou inclure des fichiers).
Il semble que std::vector pense que vous êtes la construction d'une version debug, lorsque vous sont en fait la création d'une version release.
J'espère que cette aide.
Le problème dans mon cas est une configuration de Débogage avec
Runtime Library
ensemble deMulti-threaded DLL
. La solution était de changer deMulti-threaded Debug DLL
. L'erreur a disparu. Retrait_DEBUG
macro a été aussi une sorte de solution de contournement, par je suppose que ce n'est pas une bonne idée parce que vous vous retrouvez avec debug lié à la non-débogage de la bibliothèque standard.Le problème est que j'avais _DEBUG défini en C/C++->Préprocesseur. Changer l'NDEBUG résolu le problème.
A fonctionné pour moi avec :
Le problème dans mon cas est une configuration de Débogage avec la Bibliothèque d'Exécution mis à la DLL multithread. Le correctif a été changer en multithread DLL de Débogage