如何解决LNK2019:使用std :: ifstream
我在c ++中使用std::ifstream
时遇到问题。我使用的是Visual Studio2019。每次我想初始化std::ifstream
对象时,都会出现以下错误:
文件: Shader.obj
函数“ void * __cdecl std :: __ Allocate_manually_vector_aligned(unsigned int)”(?? $ _ Allocate_manually_vector_aligned @ U_Default_allocate_traits @ std @@@ std @@ YApaxI>中引用的LNK2019不可解析的外部符号__imp___invalid_parameter
LNK2019无法解析的外部符号__imp___CrtDbgReport在函数“ void * __cdecl std :: __ Allocate_manually_vector_aligned(unsigned int)”中引用(?? $ _ Allocate_manually_vector_aligned @ U_Default_allocate_traits @ std @@@ std @@ YAPA
文件: msvcprtd.lib(locale0_implib.obj)
在函数“ public:static void __cdecl std :: _ Fac_node :: operator delete(void *)”中引用的LNK2019不可解析的外部符号__imp ___ free_dbg(?? 3_Fac_node @ std @@ SAXpax @ Z)
在函数“ public:static void * __cdecl std :: _ Fac_node :: operator new(unsigned int)”中引用的LNK2019不可解析的外部符号__imp___malloc_dbg”(?? 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();
,甚至在将参数传递给构造函数之后,这些错误仍然存在。当我对此发表评论时,程序会正确构建。
解决方法
问题是我链接了一些与调试库混合的realease库( glew32.lib 和 glfw32.lib )。因此,在 Project Properties-> Linker-> General 中,我已将其他库目录更改为调试库,并在 Linker-> Input 中更改了文件名称。
感谢@drescherjm和@ 1201ProgramAlarm的建议!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。