在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();
,甚至在将参数传递给构造函数之后,这些错误仍然存在。当我对此进行注解时,程序将正确构建。
2条答案
按热度按时间pqwbnv8z1#
问题是,我已经链接了一些realease库(glew32.lib 和 glfw32.lib)与调试库混合。因此,在项目属性->链接器->常规中,我将附加库目录更改为调试库,并在链接器->输入中更改了文件名。
感谢@drescherjm和@1201ProgramAlarm的建议!
pgky5nke2#
我已经拆分了Release目录和debug目录,但是这个错误报告仍然存在。包括路径相同的.h文件。附加包含路径-与.hpp文件相同。附加库路径-与输入路径相同-分别与发布和调试模式下的opencv_world452.lib和opencv_world452d.lib不同。