не может объявить объект fstream?но может объявить это как указатель? - PullRequest
1 голос
/ 08 ноября 2011

всю ночь била меня по столу.

Я просто пытаюсь объявить объект 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, все та же ошибка. Кроме того, не имеет значения, в каком классе (источник или заголовок) я пробую, всегда один и тот же. Даже попытался объявить это в моем файле драйвера (основной) с включением непосредственно в нем, без игры в кости ... Здесь полностью потеряно!

1 Ответ

7 голосов
/ 08 ноября 2011

Похоже, вам не удается связать среду выполнения C с вашим приложением. Когда вы объявлены как не указатель, вы вводите в свое приложение как минимум конструктора класса ifstream. Похоже, что конструктор вызывает функцию, которая является частью среды выполнения C, и, следовательно, вы в конечном итоге с ошибкой компоновки.

...