Question

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);

Les 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...

Était-ce utile?

La solution

J'ai trouvé un autre poste de forum, où quelqu'un semble avoir signalé le même problème exact que vous rencontrez.S'il vous plaît vérifier pour voir si vous avez

_DEBUG

Défini soit dans les paramètres de votre projet (sous C / C ++ - préprocesseur) ou quelque part dans votre code (ou inclure des fichiers).

Il semble que STD :: Vecteur pense que vous construisez une construction de débogage, lorsque vous créez une version de version.

J'espère que cela vous aidera.

Autres conseils

Le problème dans mon cas est une configuration de Débogage avec Runtime Library mis à Multi-threaded DLL.La solution était de changer de Multi-threaded Debug DLL.L'erreur a disparu.La suppression _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 était que j'ai eu _debug défini dans C / C ++ -> Préprocesseur.Le modifier à NDEBUG a résolu le problème.

a travaillé pour moi avec: Le problème dans mon cas a été une configuration de débogage avec la bibliothèque d'exécution définie sur la DLL multi-thread.Le correctif consistait à le changer en DLL multi-threadé

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top