не могу объявить объект fstream? но могу объявить его как указатель?

#c #ifstream

#c #ifstream

Вопрос:

всю ночь бился головой об стол из-за этого.

Я просто пытаюсь объявить объект ifstream следующим образом….

 ifstream inputStream;
  

Я получаю эту ошибку:

 Error 5 error LNK2019: unresolved external symbol __imp___CrtDbgReportW referenced in function "public: char const amp; __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:UsersJulzDesktopMy Dropbox3rdYear2ndSemesterGames ProgGameDemocracyInvadersScore.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 includes над материалом C и всевозможными вариациями, ничего.
Все мои заголовочные включения расположены в правильном порядке, и я думаю, что если бы возникла проблема с включениями, я не смог бы объявить ifstream как указатель?

о, я пробовал использовать fstream и даже просто объявлять ofstream, все та же ошибка. кроме того, не имеет значения, какой класс (исходный или заголовок) Я пробую это, всегда одно и то же. Даже пытался объявить его в моем файле драйвера (main) с includes непосредственно в нем, без кубиков… Здесь полностью потеряно!

Ответ №1:

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

Комментарии:

1. Или не удается связать правильный CRT. __imp___CrtDbgReportW похоже на что-то специфичное для CRT отладки.

2. Потрясающе, большое вам спасибо. У меня была неправильная настройка потоков (thing), установленная в библиотеке времени выполнения. Я просто установил для него параметр, предложенный lazy foo для использования SDL, я просто установил для него наследование от parent (или какую-то подобную опцию), и Роберт, твои тетушки живут в lover!!