Using namespace std i fstream

Odpowiedz Nowy wątek
2011-09-24 18:54
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?

edytowany 1x, ostatnio: Bulkas, 2011-09-24 18:54

Pozostało 580 znaków

2011-09-24 19:08
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 ;

Pozostało 580 znaków

2011-09-24 19:17
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.


"(...) otherwise, the behavior is undefined".

Pozostało 580 znaków

2011-09-24 19:28
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.

Pozostało 580 znaków

2011-09-24 19:56
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".


"(...) otherwise, the behavior is undefined".
edytowany 2x, ostatnio: Endrju, 2011-09-24 19:58

Pozostało 580 znaków

2011-09-24 20:54
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 " ([email protected][email protected]@[email protected]@[email protected]@[email protected]@[email protected]@QBEABDXZ)
1>D:\Moje Dokumenty\C++\Projekty\Project Nytia - Map Editor\Debug\Nytia.exe : fatal error LNK1120: 1 unresolved externals

edytowany 1x, ostatnio: Bulkas, 2011-09-24 20:55

Pozostało 580 znaków

2011-09-24 22:25
0

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

Pozostało 580 znaków

2011-09-24 22:29
0

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

Pozostało 580 znaków

2011-09-25 09:24
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.

Dokładnie tak, mi na początku pracy z Visualem też takie numery się działy :) - robin3d 2011-09-25 09:39

Pozostało 580 znaków

2011-09-25 09:49
0

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

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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