vectores suma que programacion programa nĂºmeros multiplicar escribe elementos ejercicios defina calcule ats arreglos arreglo acumulada c++ find stdvector unresolved-external

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