Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Databyte

Alter Hase

  • »Databyte« ist der Autor dieses Themas

Beiträge: 1 040

Wohnort: Na zu Hause

Beruf: Student (KIT)

  • Private Nachricht senden

1

11.12.2011, 21:43

Problem mit Umlauten auf Linux [cmake]

Hallo Leute,

nach langer Zeit habe ich mal wieder eine Problem, bei dem ich nicht weiter komme. Neuerdings habe ich ein Netbook mit Linux (Archlinux) drauf und auf dem möchte ich jetzt natürlich auch ein bisl proggen^^. Deshalb hab ich mal ein bisschen getestet und bin gleich auf ein kleines Problem gestoßen. Ich wollte ein altes Projekt compilieren, welches wxWidgets benutzt. also hab ich das alles soweit eingerichtet und wollte dann compilieren. Also für das Projekt hab ich dann cmake benutzt. das hat auch alles funktioniert; also zumindest für meine kleinen Testprojekte. als ich dann aber besagtes Projekt compilieren wollte kamen ein paar fehler, die anscheinent etwas mit den deutsche Umlauten zu tuen hatten. Folgende Fehler kamen:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
[ 50%] Building CXX object crypt/CMakeFiles/crypt.dir/MainWindow.cpp.o
/home/***/workspace/c++/crypt/src/MainWindow.cpp: In Konstruktor »CryptWindow::CryptWindow(const wxString&)«:
/home/***/workspace/c++/crypt/src/MainWindow.cpp:23:1: Fehler: converting to execution character set: Ungültiges oder unvollständiges Multi-Byte- oder Wide-Zeichen
/home/***/workspace/c++/crypt/src/MainWindow.cpp: In Elementfunktion »wxString CryptWindow::GetFilePath()«:
/home/***/workspace/c++/crypt/src/MainWindow.cpp:177:1: Fehler: converting to execution character set: Ungültiges oder unvollständiges Multi-Byte- oder Wide-Zeichen
/home/***/workspace/c++/crypt/src/MainWindow.cpp: In Elementfunktion »bool CryptWindow::LoadFileFromString(const wxString&)«:
/home/***/workspace/c++/crypt/src/MainWindow.cpp:223:1: Fehler: converting to execution character set: Ungültiges oder unvollständiges Multi-Byte- oder Wide-Zeichen
/home/***/workspace/c++/crypt/src/MainWindow.cpp:223:1: Fehler: converting to execution character set: Ungültiges oder unvollständiges Multi-Byte- oder Wide-Zeichen
/home/tobi/workspace/c++/crypt/src/MainWindow.cpp: In Elementfunktion »bool CryptWindow::LoadFile()«:
/home/tobi/workspace/c++/crypt/src/MainWindow.cpp:273:1: Fehler: converting to execution character set: Ungültiges oder unvollständiges Multi-Byte- oder Wide-Zeichen
make[2]: *** [crypt/CMakeFiles/crypt.dir/MainWindow.cpp.o] Fehler 1
make[1]: *** [crypt/CMakeFiles/crypt.dir/all] Fehler 2
make: *** [all] Fehler 2


Hab ein bisschen im Internet gesucht aber nichts richtiges gefunden. Außer dass es anscheinend an den Umlauten liegt. Habe dann wie man sehen kann mein System auch auf deutsch umgestellt, das hat aber nichts gerbracht.

Hier noch die CMakeLists.txt:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
cmake_minimum_required(VERSION 2.7)
project(Crypt)


# wxWidgets Stuff
find_package(wxWidgets COMPONENTS core base REQUIRED)
include( "${wxWidgets_USE_FILE}" )


add_definitions(-DUNICODE -D_UNICODE)
add_subdirectory(../src ${CMAKE_CURRENT_BINARY_DIR}/crypt)


Weiß da vlt jemand was ? Das witzige ist nämlich, dass es bei anderen Tests funktioniert hat, auch wenn dann statt einemm Ü ein ? kam, was ein bisschen komisch war, denn mit char anstatt wchar_t hat es funktioniert...

PS: hier noch ein bisschen code aus der CryptWindow::GetFilePath():

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
wxString CryptWindow::GetFilePath()

{

    if(m_FileInput->IsEmpty())

    {

        wxFileDialog dlg(this, _T("Wähle eine Speicherdatei"), _T(""), _T(""), _T("Crypt-Datei (*.cry)|*.cry|Text-Datei (*.txt)|*.txt|Alle Dateien (*.*)|*.*"), wxFD_SAVE);

        dlg.ShowModal();



        m_FileInput->SetValue(dlg.GetPath());



        return dlg.GetPath();

    }

    return m_FileInput->GetValue();

}

Databyte

Alter Hase

  • »Databyte« ist der Autor dieses Themas

Beiträge: 1 040

Wohnort: Na zu Hause

Beruf: Student (KIT)

  • Private Nachricht senden

2

13.12.2011, 11:09

Ok es lag anscheinend daran, dass die Datei von Windows kam (über svn) und sie deshalb ein Format hatte, mit dem g++ nicht zurecht kam. jetzt gehts zumindest.