Using namespace std i fstream

0

Witam.

Mam pewien problem. Pisze sobie taką gierkę w bibliotece SDL i chcę zrobić zapisywanie danych do pliku.
Wcześniej nie używałem using namespace std, i działało poprawnie wszystko. Teraz jednak fstream tego wymaga i chciałem to dodać, ale po dodaniu pojawiają się błędy, których nie rozumiem (nie odnoszą się do żadnej konkretnej linii kodu)

1>MSVCMRT.lib(locale0_implib.obj) : error LNK2022: metadata operation failed (8013118D) : Inconsistent layout information in duplicated types (std._String_const_iterator<char,std::char_traits<char>,std::allocator<char> >): (0x02000019).
1>MSVCMRT.lib(locale0_implib.obj) : error LNK2022: metadata operation failed (8013118D) : Inconsistent layout information in duplicated types (std.basic_string<char,std::char_traits<char>,std::allocator<char> >): (0x0200003d).
1>MSVCMRT.lib(locale0_implib.obj) : error LNK2022: metadata operation failed (8013118D) : Inconsistent layout information in duplicated types (std.basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >): (0x02000063).
1>MSVCMRT.lib(locale0_implib.obj) : error LNK2022: metadata operation failed (8013118D) : Inconsistent layout information in duplicated types (std._String_iterator<char,std::char_traits<char>,std::allocator<char> >): (0x02000080).
1>MSVCMRT.lib(locale0_implib.obj) : error LNK2022: metadata operation failed (8013118D) : Inconsistent layout information in duplicated types (std._String_val<char,std::allocator<char> >): (0x02000081).
1>MSVCMRT.lib(locale0_implib.obj) : error LNK2022: metadata operation failed (8013118D) : Inconsistent layout information in duplicated types (std._String_val<wchar_t,std::allocator<wchar_t> >): (0x02000083).
1>LINK : fatal error LNK1255: link failed because of metadata errors

Co oznaczają te błędy?

0

Masz jakiś konflikt z nazwami w bibliotekach które linkujesz a std .
Zamiast udostępniać całą przestrzeń nazw std spróbuj użyć tylko tych obiektów których potrzebujesz np:

#include <fstream>
using std::ifstream ;
using std::ofstream ;
0

Nie znam się za bardzo na wynalazkach MS, ale Internety mówią, że takie błędy są związane z używaniem "Managed Extensions for C++". O ile dobrze rozumiem to ten wynalazek został zastąpiony nowym wynalazkiem jakim jest C++/CLI. Jeżeli nie używasz tych wynalazków (a skoro piszesz pod SDL to chyba nie?) wyłącz je w opcjach kompilatora.

0
dzejo napisał(a)

Masz jakiś konflikt z nazwami w bibliotekach które linkujesz a std .
Zamiast udostępniać całą przestrzeń nazw std spróbuj użyć tylko tych obiektów których potrzebujesz np:

#include <fstream>
using std::ifstream ;
using std::ofstream ;

using std::ifstream; - Nie wywaliło błędu.
ifstream in("test.txt"); - Wywaliło to co wyżej.

Endrju napisał(a)

Nie znam się za bardzo na wynalazkach MS, ale Internety mówią, że takie błędy są związane z używaniem "Managed Extensions for C++". O ile dobrze rozumiem to ten wynalazek został zastąpiony nowym wynalazkiem jakim jest C++/CLI. Jeżeli nie używasz tych wynalazków (a skoro piszesz pod SDL to chyba nie?) wyłącz je w opcjach kompilatora.

A wiesz może gdzie to wyłączyć? Przeszukałem opcje środowiska i projektu i nie znalazłem nic o takiej nazwie.

0

Nie znam tego IDE, msdn mówi tak:

msdn napisał(a)

Open the project's Property Pages dialog box. For details, see Setting Visual C++ Project Properties.
Click the Configuration Properties folder.
Click the General property page.
Modify the Use Managed Extensions property.

Przeszukaj dokładnie te opcje i Internet...

Poszukaj też opcji odnośnie "Common Language Runtime Support".

0
Endrju napisał(a)

Nie znam tego IDE, msdn mówi tak:
Poszukaj też opcji odnośnie "Common Language Runtime Support".

Wyłączyłem i teraz pojawił się już tylko 1 błąd:

1>main.obj : 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)
1>D:\Moje Dokumenty\C++\Projekty\Project Nytia - Map Editor\Debug\Nytia.exe : fatal error LNK1120: 1 unresolved externals

0

Najprawdopodobniej utworzyłeś projekt Windows Forms. Spróbuj utworzyć nowy projekt, ale tylko Windows Console Application i zaznacz "Empty Project" :)

0

Na bank robiłem na empty project, zawsze tak robię :D

0

utwórz nowy projekt Win32 | Console Project. zacząłeś od CLR czy tam Managed Extensions i zamiast to odkręcać, utwórz na nowo.

0

Zrobiłem nowy empty project, po kopiowałem wszystko i działa.
Dzięki za odpowiedzi :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1