Qt4 unter Windows und Libnodave

Waddi

Level-1
Beiträge
12
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Guten Tag,

ich versuche mittels der QT SDK eine GUI für mein Programm zu Steuerung von S7 - 1200ern zu erstellen. Soweit so Gut, aber wenn ich nun versuche in dieser SDK meinen Quellcode für die Kommunikation zu erstellen bekomme ich einen Fehler:

undefined reference to ...

das Problem kenne ich. Ich muss dem Linker die libnodave.lib irgendiwe übergeben. Nur weiss ich nicht wie. In der *.pro Datei habe ich bereits versucht etwas zu editieren, aber bislang ohne Erfolg.
Auch habe ich was davon gelesen, das der Compiler die *.lib nicht erkennen kann und ich eine *.a brauche.

Habt Ihr Ideen oder Anregungen, die mich weiter bringen können?

Vielen Danke im Voraus
 
Was für einen Compiler benutzt du denn in Zusammenhang mit Qt?
Wenn du den MS-Compiler benutzt brauchst du eine *.lib, beim MinGW und anderen Windows GCC-Clonen brauchst du eine *.a Datei.

Was hast du denn vor: statisch linken, dynamisch linken (dll)?
 
Ja ich benutze MinGW so wie es aussieht.

Was hast du denn vor: statisch linken, dynamisch linken (dll)?

Kann ich dir nicht genau beantworten. Also möchte das Programm halt fertig erstellt haben :rolleyes:. Und um libnodave zu erstelln brauche ich ja die libnodave.lib. Soviel weiß ich!

Hoffe das kommt jetzt nicht zu anfängerhaft rüber.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Offensichlich hast Du die LGPL Version von Qt für MinGW unter Windows.
Dann hast Du name.a bei statischen Libs.

Hier poste ich mal einen PRO File aus pvbrowser.
Da kannst Du das in der Sektion win32-g++ abgucken
oder gleich http://pvbrowser.org nehmen,
da ist unter Anderem auch libnodave mit drin.

######################################################################
# generated by pvdevelop at: So. Jan 23 16:34:31 2011
######################################################################

TEMPLATE = app
CONFIG = warn_on release
CONFIG -= qt

# Input
HEADERS += processviewserver.h
#HEADERS += rldefine.h
HEADERS += pvapp.h \
mask1_slots.h
SOURCES += main.cpp \
mask1.cpp

!macx {
unix:LIBS += /usr/lib/libpvsmt.so -pthread
#unix:LIBS += /usr/lib/libpvsid.so
unix:INCLUDEPATH += /opt/pvb/pvserver
unix:LIBS += /usr/lib/librllib.so
unix:INCLUDEPATH += /opt/pvb/rllib/lib
}

macx:LIBS += /opt/pvb/pvserver/libpvsmt.a /usr/lib/libpthread.dylib
#macx:LIBS += /opt/pvb/pvserver/libpvsid.a
macx:INCLUDEPATH += /opt/pvb/pvserver
#macx:LIBS += /usr/lib/librllib.dylib
#macx:INCLUDEPATH += /opt/pvb/rllib/lib

win32-g++ {
QMAKE_LFLAGS += -static-libgcc
#win32:LIBS += "$(PVBDIR)/win-mingw/bin/librllib.a"
win32:LIBS += "$(PVBDIR)/win-mingw/bin/libserverlib.a" "$(MINGWDIR)/lib/libws2_32.a" "$(MINGWDIR)/lib/libadvapi32.a"
win32:INCLUDEPATH += "$(PVBDIR)/pvserver"
#win32:INCLUDEPATH += "$(PVBDIR)/rllib/lib"
}
else {
win32:LIBS += "$(PVBDIR)/win/bin/serverlib.lib" wsock32.lib advapi32.lib
win32:INCLUDEPATH += "$(PVBDIR)/pvserver"
#win32:LIBS += "$(PVBDIR)/win/bin/rllib.lib"
#win32:INCLUDEPATH += "$(PVBDIR)/rllib/lib"
}

#DEFINES += USE_INETD
TARGET = pvs
 
So ich habe es hinbekommen!

Hab die *.pro geändert und die *.dll in den bin Ordner zur *.exe getan.

Ein Problem war, dass der angegebene Pfad zur libnodave.lib nicht erkannt worden ist. Ich habe diesen Pfad nu kürzer gewählt und will
jetzt noch herausfinden warum dieser Pfad nicht akzeptiert worden ist.

Folgende Zeile habe ich editiert.

win32:LIBS += "c:/Qt/libnodave.lib"

Danke
 
Zuletzt bearbeitet:
Der Pfad sollte eigentlich beliebig lang sein können.
Du hast ja auch die Gänsefüsschen um den Pfad gemacht.
Das wird meist vergessen und geht dann schief, wenn Leerzeichen im Pfad sind.

Die DLL's müssen beim Starten des Programmes natürlich erst noch gefunden werden.
Also, entweder in das selbe Verzeichnis kopieren, wie die Anwendung selber oder in einem Pfad der systemweit bekannt ist.
 
Zurück
Oben