que - suma de vectores en c++
Externos sin resolver en C++ al usar vectores y encontrar (4)
He intentado este código en un proyecto totalmente separado, y funciona bien (la única diferencia es que el proyecto que no funciona se está exportando como un archivo DLL). Aquí está el código:
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);
ERRORES
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
Y eso es. No estoy seguro de por qué funciona en el otro proyecto y no en este ...
El problema en mi caso era una configuración de depuración con la Runtime Library
establecida en Multi-threaded DLL
. La solución fue cambiarlo a Multi-threaded Debug DLL
. El error se ha ido. La eliminación de la macro _DEBUG
también fue un tipo de solución, por lo que supongo que no es una buena idea porque terminas con una compilación de depuración vinculada a una biblioteca estándar que no es de depuración.
El problema era que tenía _DEBUG definido en C / C ++ -> Preprocessor. Cambiarlo a NDEBUG solucionó el problema.
Encontré otra publicación en el foro, donde alguien parece haber informado exactamente el mismo problema que usted tiene. Por favor verifica si tienes
_DEBUG
definido ya sea en la configuración de su proyecto (en C / C ++ - Preprocesador) o en algún lugar de su código (o incluir archivos).
Parece que std :: vector piensa que estás creando una compilación de depuración, cuando en realidad estás creando una compilación de lanzamiento.
Espero que esto ayude.
Trabajé para mí con: El problema en mi caso fue una configuración de depuración con la biblioteca de tiempo de ejecución establecida en DLL de subprocesos múltiples. La solución fue cambiarlo a DLL de depuración de subprocesos múltiples