c++visual-studiocompiler-errorsifstreamlnk2019

LNK2019: unresolved extrenal symbol when using std::ifstream


I have a problem with using std::ifstream in c++. I'm using Visual Studio 2019. Every time I want to initialize the std::ifstream object it gives me these errors:

file: Shader.obj

LNK2019 unresolved external symbol __imp___invalid_parameter referenced in function "void * __cdecl std::_Allocate_manually_vector_aligned(unsigned int)" (??$_Allocate_manually_vector_aligned@U_Default_allocate_traits@std@@@std@@YAPAXI@Z)

LNK2019 unresolved external symbol __imp___CrtDbgReport referenced in function "void * __cdecl std::_Allocate_manually_vector_aligned(unsigned int)" (??$_Allocate_manually_vector_aligned@U_Default_allocate_traits@std@@@std@@YAPAXI@Z)

file: msvcprtd.lib(locale0_implib.obj)

LNK2019 unresolved external symbol __imp___free_dbg referenced in function "public: static void __cdecl std::_Fac_node::operator delete(void *)" (??3_Fac_node@std@@SAXPAX@Z)

LNK2019 unresolved external symbol __imp___malloc_dbg referenced in function "public: static void * __cdecl std::_Fac_node::operator new(unsigned int)" (??2_Fac_node@std@@SAPAXI@Z)

Shader.h

#pragma once

#include <iostream>
#include <fstream>
#include <string>

#include <GLFW/glfw3.h>
#include <glm/vec3.hpp>
#include <glm/vec4.hpp>
#include <glm/mat4x4.hpp>
#include <glm/gtc/matrix_transform.hpp>
#include <glm/gtc/type_ptr.hpp>

class Shader
{
private:
    /* some code */
public:
    /* some code */
    void setSourceFile(const std::string& filename);
}

Shader.cpp

#include "Shader.h"

/* some code */

void Shader::setSourceFile(const std::string& filename)
{
    std::ifstream* shaderFile = new std::ifstream();
}

These errors remains even if i run just std::ifstream shaderFile(); and even after passing arguments to the constructor. When I comment this, the program builds properly.


Solution

  • The problem was that I have linked some realease libraries(glew32.lib and glfw32.lib) mixed with debug libraries. So in Project Properties->Linker->General I have changed Additional Library Directories to the debug libraries and in Linker->Input changed the file names.

    Thanks @drescherjm and @1201ProgramAlarm for advices!