Visual Studio LNK 2019:使用std::ifstream时无法解析外部符号

bweufnob  于 2023-10-23  发布在  其他
关注(0)|答案(2)|浏览(135)

在c++中使用std::ifstream有问题。我正在使用Visual Studio 2019。每次我想初始化std::ifstream对象时,它都会给我这些错误:
文件:Shader.obj
LNK 2019函数“void * __cdecl std::_Allocate_manually_vector_aligned(unsigned int)”中引用的未解析外部符号__imp_invalid_parameter(??$_Allocate_manually_vector_aligned@U_Default_allocate_traits@std @ std @@YAPAXI@Z)
LNK 2019函数“void * __cdecl std::_Allocate_manually_vector_aligned(unsigned int)”中引用的未解析外部符号__imp_CrtDbgReport(??$_Allocate_manually_vector_aligned@U_Default_allocate_traits@std @ std @@YAPAXI@Z)
文件:msvcprtd.lib(locale0_implib.obj)
LNK 2019函数“public:”中引用的未解析外部符号__imp_free_dbg:static void __cdecl std::_Fac_node::operator delete(void *)”(??3_Fac_node@std@@SAXPAX@Z)
LNK 2019函数“public:”中引用的未解析外部符号__imp_malloc_dbg: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();
}

即使我只运行std::ifstream shaderFile();,甚至在将参数传递给构造函数之后,这些错误仍然存在。当我对此进行注解时,程序将正确构建。

pqwbnv8z

pqwbnv8z1#

问题是,我已经链接了一些realease库(glew32.libglfw32.lib)与调试库混合。因此,在项目属性->链接器->常规中,我将附加库目录更改为调试库,并在链接器->输入中更改了文件名。
感谢@drescherjm和@1201ProgramAlarm的建议!

pgky5nke

pgky5nke2#

我已经拆分了Release目录和debug目录,但是这个错误报告仍然存在。包括路径相同的.h文件。附加包含路径-与.hpp文件相同。附加库路径-与输入路径相同-分别与发布和调试模式下的opencv_world452.lib和opencv_world452d.lib不同。

相关问题