【问题标题】:can't declare fstream object? but can declare it as a pointer?不能声明 fstream 对象?但可以将其声明为指针吗?
【发布时间】:2011-11-08 15:32:32
【问题描述】:

整晚都在敲桌子。

我只是想像这样声明一个 ifstream 对象......

ifstream inputStream;

我收到此错误:

Error 5 error LNK2019: unresolved external symbol __imp___CrtDbgReportW referenced in function "public: char const & __thiscall std::_String_const_iterator<char,struct std::char_traits<char>,class std::allocator<char> >::operator*(void)const " (??D?$_String_const_iterator@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEABDXZ)    C:\Users\Julz\Desktop\My Dropbox\3rdYear\2ndSemester\Games Prog\Game\DemocracyInvaders\Score.obj    DemocracyInvaders

我可以像这样将它声明为指针...

ifstream *inputStream;

但是当我尝试读取文件数据时,这只会让我头疼,我想我应该在尝试一些黑客修复之前弄清楚为什么基本声明不起作用。

我正在使用 SDL,并且在标题中包含以下几个文件...

#ifndef SDL_GRAPHICS_H //just a class I'm using to initialise my SDL stuff
#define SDL_GRAPHICS_H

#include <stdio.h>
#include <iostream>
#include <vector>
#include <fstream>
#include "SDL.h" 
#include "SDL_ttf.h"

我已经尝试交换 SDL 包括 C++ 内容和各种变体,什么都没有。 我的标头包含的顺序都正确,我想如果包含有问题,我不能将 ifstream 声明为指针?

哦,我试过使用 fstream,甚至只是声明 ofstream,都是同样的错误。 此外,我在哪个类(源代码或标题)中尝试它并不重要,总是相同的。甚至尝试在我的驱动程序(主)文件中声明它,直接在其中包含包含,没有骰子...... 完全迷路了!

【问题讨论】:

    标签: c++ ifstream


    【解决方案1】:

    您似乎未能将 C 运行时链接到您的应用程序。当声明为非指针时,您至少将ifstream 类的构造函数引入您的应用程序。似乎构造函数调用了一个函数,该函数是 C 运行时的一部分,因此您最终会遇到链接错误。

    【讨论】:

    • 或未能链接正确 CRT。 __imp___CrtDbgReportW 看起来像是 Debug CRT 特有的东西。
    • 太棒了,非常感谢。我在运行时库中设置了错误的线程(事物)。我只是将它设置为使用 SDL 的惰性 foo 建议设置,我只是将其设置为从父级(或某些此类选项)继承,而罗伯特是你的阿姨住在情人中!!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-12-01
    • 1970-01-01
    • 2019-02-26
    • 1970-01-01
    • 1970-01-01
    • 2011-05-13
    • 2015-05-02
    相关资源
    最近更新 更多