Seite 1 von 2
qmake setzt immer -DUNICODE
Verfasst: 8. April 2006 12:01
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ß
Verfasst: 8. April 2006 12:15
von stefan-tiger
Habs schon, in der .pro Datei einfach:
DEFINES -= UNICODE
eintragen.
Verfasst: 8. April 2006 19:15
von BartSimpson
Und wieso soll das stören??
Die anderen Dateien ignorieren das doch, es sei denn diese werten das aus.
Verfasst: 9. April 2006 11:52
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.
Verfasst: 9. April 2006 12:06
von BartSimpson
Bin gerade dabei mal schauen wo es hakt:)
Also im Quellcode wird an den Stellen nirgens die Option UNICODE ausgewertet.
Verfasst: 9. April 2006 12:43
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
Verfasst: 9. April 2006 12:51
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.
Verfasst: 9. April 2006 13:00
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

.
Verfasst: 9. April 2006 13:08
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:
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.
Verfasst: 9. April 2006 13:51
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.
Verfasst: 9. April 2006 13:52
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.
Verfasst: 9. April 2006 13:55
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?
Verfasst: 9. April 2006 15:30
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.
Verfasst: 9. April 2006 15:50
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.
Verfasst: 9. April 2006 16:25
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".