MSVC lib in QT einbinden

Alles zu Entwicklungsumgebungen und Editoren für Qt
Antworten
Divini
Beiträge: 4
Registriert: 28. November 2016 15:54

MSVC lib in QT einbinden

Beitrag von Divini »

Hallo,

ich will mit QT auf eine SPS über die COM-Schnittstelle zugreifen. Hier für gibt es vom Hersteller eine Bibliothek für Visual C++ mit den Dateien .dll, .lib und .h, habe alle ins Projektverzeichnis kopiert, die .lib habe ich über "Bibliothek hinzufügen" eingebunden. Ich nutze den MSVC2015 32-bit Compiler. Mit Visual Studio funktioniert der Zugriff. Aber beim Ausführen mit QT kommen folgende Fehler:

"Fehler: LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__Open_ComPort@8" in Funktion "_main"."

"Fehler: LNK1120: 1 nicht aufgelöste Externe"

Quellcode:
.pro:

Code: Alles auswählen

QT += core
QT -= gui

CONFIG += c++11

TARGET = Easy
CONFIG += console
CONFIG -= app_bundle

TEMPLATE = app

SOURCES += main.cpp

win32: LIBS += -L$$PWD/./ -lEASY_COM

INCLUDEPATH += $$PWD/.
DEPENDPATH += $$PWD/.

win32:!win32-g++: PRE_TARGETDEPS += $$PWD/./EASY_COM.lib
else:win32-g++: PRE_TARGETDEPS += $$PWD/./libEASY_COM.a
.cpp:

Code: Alles auswählen

#include <QCoreApplication>
#include <iostream>
#include "easyComApi.h"

using namespace std;

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

    cout << "Easy mit QT-Steuern" << endl;
    cout << "Open_ComPort: " << Open_ComPort(3, 19200) << endl;

    return a.exec();
}
Kann mir bitte jemand weiter helfen?
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Re: MSVC lib in QT einbinden

Beitrag von Christian81 »

Visual Studio kennt kein '-L' und '-l' -> Qt Doku: http://doc.qt.io/qt-5/qmake-variable-re ... .html#libs
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Divini
Beiträge: 4
Registriert: 28. November 2016 15:54

Re: MSVC lib in QT einbinden

Beitrag von Divini »

Danke für die Antwort.

Habe die .pro jetzt angepasst, es werden aber immer noch die gleichen Fehler angezeigt.

.pro:

Code: Alles auswählen

QT += core
QT -= gui

CONFIG += c++11

TARGET = Easy
CONFIG += console
CONFIG -= app_bundle

TEMPLATE = app

SOURCES += main.cpp

win32:LIBS += C:/Users/Marc/Documents/Easy/EASY_COM.lib
Hatte es auch mit

Code: Alles auswählen

win32:LIBS += "C:\Users\Marc\Documents\Easy\EASY_COM.lib"
versucht, hatte aber auch nichts geändert.

Gruß Marc
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Re: MSVC lib in QT einbinden

Beitrag von Christian81 »

Wird im Linker-Aufruf (oder z.B. in der VS-Solution die du mittels qmake erstellt hast) auch die Lib-Datei angezeogen? Ggf. ist in dieser Import-Lib auch die Funktion gar nicht definiert.

Funktioniert prima bei mir (EasyCom 2.50):

Code: Alles auswählen

TEMPLATE = app
TARGET = easycom
INCLUDEPATH += .

# Input
SOURCES += main.cpp
LIBS += D:\work\easycom\EASY_COM.lib

Code: Alles auswählen

#include "easyComApi.h"

int main(int argc, char **argv)
{
    Open_ComPort(3, 19200);
}
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Divini
Beiträge: 4
Registriert: 28. November 2016 15:54

Re: MSVC lib in QT einbinden

Beitrag von Divini »

Hab jetzt mal ein neues Projekt erstellt und deinen Code übernommen, dann Funktioniert alles prima.

Ich nutze auch die EasyCom 2.50. Wie kann ich den den Linker einstellen und was muss ich mit qmake machen damit auch mein Programm läuft?

Schon mal vielen Dank für die Hilfe

Gruß Marc
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Re: MSVC lib in QT einbinden

Beitrag von Christian81 »

Da sich Dein und mein Testprogramm nicht viel unterscheiden würde ich sagen - nimm einfach alles nach und nach rein damit Du siehst was das Problem verursacht.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Divini
Beiträge: 4
Registriert: 28. November 2016 15:54

Re: MSVC lib in QT einbinden

Beitrag von Divini »

Scheinbar gab es beim erstellen des Projekts ein Problem, hatte deinen Code eingefügt und die Fehler kamen immer noch. Wenn ich ein neues Projekt, mit deinem .pro Code erstelle funktioniert alles prima. Danke für deine Hilfe.

Gruß Marc
Antworten