qmake setzt immer -DUNICODE

Alles rund um die Programmierung mit Qt
stefan-tiger
Beiträge: 49
Registriert: 28. März 2006 22:52

qmake setzt immer -DUNICODE

Beitrag von stefan-tiger »

Hallo,

mein qmake setzt immer -DUNICODE, sowohl unter Linux als auch unter Windows.

Unter Linux funktioniert das, aber unter Windows läßt sich meine Anwendung nur ohne das kompilieren (da fremde Quellcodedateien mitkompiliert werden).

Ich habe in der .pro Datei aber bei DEFINES das nicht drin, d.h. qmake fürgt das automatisch hinzu.

Jetzt benötige ich etwas, was ich entweder in die .pro Datei eintragen kann, um -DUNICODE zu vermeiden, oder wie ich qmake anders dazu bringe das wegzulassen.

Gruß
stefan-tiger
Beiträge: 49
Registriert: 28. März 2006 22:52

Beitrag von stefan-tiger »

Habs schon, in der .pro Datei einfach:

DEFINES -= UNICODE

eintragen.
BartSimpson
Beiträge: 1379
Registriert: 6. November 2004 12:03
Kontaktdaten:

Beitrag von BartSimpson »

Und wieso soll das stören??
Die anderen Dateien ignorieren das doch, es sei denn diese werten das aus.
stefan-tiger
Beiträge: 49
Registriert: 28. März 2006 22:52

Beitrag von stefan-tiger »

BartSimpson hat geschrieben:Und wieso soll das stören??
Die anderen Dateien ignorieren das doch, es sei denn diese werten das aus.
Geh auf:

http://www.codemercs.com/D_index.html

ladt dir das Windows-SDK vom IO-Warrior herunter und versuche die Datei iowkit.cpp zu kompilieren, mit mingw32 und qmake.
BartSimpson
Beiträge: 1379
Registriert: 6. November 2004 12:03
Kontaktdaten:

Beitrag von BartSimpson »

Bin gerade dabei mal schauen wo es hakt:)
Also im Quellcode wird an den Stellen nirgens die Option UNICODE ausgewertet.
stefan-tiger
Beiträge: 49
Registriert: 28. März 2006 22:52

Beitrag von stefan-tiger »

BartSimpson hat geschrieben:Bin gerade dabei mal schauen wo es hakt:)
Also im Quellcode wird an den Stellen nirgens die Option UNICODE ausgewertet.
Mag sein, den Fehler den ich hatte kannst du hier lesen: http://www.codemercs.com/phpBB2/viewtopic.php?t=530
BartSimpson
Beiträge: 1379
Registriert: 6. November 2004 12:03
Kontaktdaten:

Beitrag von BartSimpson »

das läst sich mit einem einfachen cast beheben.
in den Fall (wchar*). Oder benutzt nicht die W Funktionen.
Die erwarten allen UTF-16 Strings.
stefan-tiger
Beiträge: 49
Registriert: 28. März 2006 22:52

Beitrag von stefan-tiger »

BartSimpson hat geschrieben:das läst sich mit einem einfachen cast beheben.
in den Fall (wchar*). Oder benutzt nicht die W Funktionen.
Die erwarten allen UTF-16 Strings.
ICH mache garnichts. Die Datei ist aus dem SDK, und ich möchte diese eigentlich nicht verändern, ausser ich habe nun, da ich unter Windows die Option unicode weglasse relevante Nachteile.

Die Quellcodedateien die ich selbst erstellt habe funktionieren alle mit der Option, allerdings benutze ich weder W-Funktionen noch diese casts, oder ich bin mit nicht bewusst, daß ich das tue ;).
BartSimpson
Beiträge: 1379
Registriert: 6. November 2004 12:03
Kontaktdaten:

Beitrag von BartSimpson »

Dann gibt es noch eine 2. Möglichkeit. Du benutzt doch garantiert VS oder?
dort kannst du die Sprachvariante festlegen. Machmal stellt MS das automatisch auf Unicode, was dazuführt, das alle Funtionen die char erwarten nur noch eine Verpackung für die W Funktionen sind, die denn aber leider wchar haben wollen. Kannst ja mal schauen, ob das aktiviert ist.
Denn die Option wird der qmake.conf gesetzt. Du kannste ja mal versucheweise in deinem Programm schreiben:

Code: Alles auswählen

#ifdef UNICODE
#undef UNICODE
#endif
Ich habe mit nochmal den Quellcode angeschaut. du must ja nur die iowkit.h includieren, um das ganze zu nutzen. Und dann tritt das Problem ja nicht auf.
Denn wenn du die Lib selber bauen willst, dann ginbt es ja schon eine Projektdatei.
stefan-tiger
Beiträge: 49
Registriert: 28. März 2006 22:52

Beitrag von stefan-tiger »

BartSimpson hat geschrieben:Dann gibt es noch eine 2. Möglichkeit. Du benutzt doch garantiert VS oder?
Ich benutze KWrite als editor, die KDE Konsole mit qmake zum kompilieren und den Designer für die Oberfläche.
stefan-tiger
Beiträge: 49
Registriert: 28. März 2006 22:52

Beitrag von stefan-tiger »

BartSimpson hat geschrieben:...

Ich habe mit nochmal den Quellcode angeschaut. du must ja nur die iowkit.h includieren, um das ganze zu nutzen. Und dann tritt das Problem ja nicht auf.
Ich includiere iowkit.h in zwei von meinen eigenen Quelldateien, das Problem tritt aber auf.
BartSimpson
Beiträge: 1379
Registriert: 6. November 2004 12:03
Kontaktdaten:

Beitrag von BartSimpson »

und die cpp dateien die haste du nicht in deinem Projekt oder?
Haste das Projekt irgenwo im Netzstehen, das man sich das ganze mal anschauen kann?
stefan-tiger
Beiträge: 49
Registriert: 28. März 2006 22:52

Beitrag von stefan-tiger »

BartSimpson hat geschrieben:und die cpp dateien die haste du nicht in deinem Projekt oder?
Haste das Projekt irgenwo im Netzstehen, das man sich das ganze mal anschauen kann?
Nein hab ich nicht, aber hier mal meine .pro Datei:

Code: Alles auswählen

######################################################################
# Automatically generated by qmake (2.00a) Mi Apr 5 18:40:51 2006
######################################################################

# DEFINES += _WIN32
# DEFINES -= UNICODE
TEMPLATE = app
TARGET += 
DEPENDPATH += . src src/linux src/win32
INCLUDEPATH += . src src/linux src/win32
unix:LIBS += src/linux/libiowkit.so
win32:LIBS += src/win32/iowkit.lib

CONFIG += debug_and_release debug_and_release_target

# Input
HEADERS += qubawidgetbase.h \
           src/iowarrior.h \
           src/iowinfo.h \
           src/iowkit.h \
           src/quba.h \
           src/qubawidget.h \
           src/qubawidgetbase.h
unix:HEADERS += src/linux/iowwintypes.h
win32:HEADERS += src/win32/hidinc.h \
           src/win32/iowdev.h \
           src/win32/StdAfx.h
FORMS += src/qubawidgetbase.ui
SOURCES += src/iowarrior.cpp \
           src/main.cpp \
           src/quba.cpp \
           src/qubawidget.cpp 
unix:SOURCES += src/linux/iowkit.cpp
win32:SOURCES += src/win32/iowkit.cpp \
           src/win32/StdAfx.cpp
In "iowarrior.h" und "iowarrior.cpp", welches von mir erstellte Quellcodedateien sind, habe ich "iowkit.h" includiert.

Unter Linux wird anhand von "_WIN32" noch die "iowwintypes.h" (vom SDK) includiert.
BartSimpson
Beiträge: 1379
Registriert: 6. November 2004 12:03
Kontaktdaten:

Beitrag von BartSimpson »

Da sehe ich auch schon die 1. Fehler!!!
# DEFINES += _WIN32
# DEFINES -= UNICODE
nach /dev/null
und
SOURCES += src/iowarrior.cpp
unix:SOURCES += src/linux/iowkit.cpp
win32:SOURCES += src/win32/iowkit.cpp \
src/win32/StdAfx.cpp
auch nach /dev/null:)
Denn du willst ja die lib benutzen und nicht bauen!!
Dafür muss jetzte in die .pro Datei rein, das er gegen die lib vom SDK linken soll.
stefan-tiger
Beiträge: 49
Registriert: 28. März 2006 22:52

Beitrag von stefan-tiger »

BartSimpson hat geschrieben:...
Dafür muss jetzte in die .pro Datei rein, das er gegen die lib vom SDK linken soll.
Ist doch schon drin oder?

Schau mal die zwei Zeilen vor "CONFIG".
Antworten