Seite 1 von 1

MSVC lib in QT einbinden

Verfasst: 28. November 2016 16:31
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?

Re: MSVC lib in QT einbinden

Verfasst: 29. November 2016 06:35
von Christian81
Visual Studio kennt kein '-L' und '-l' -> Qt Doku: http://doc.qt.io/qt-5/qmake-variable-re ... .html#libs

Re: MSVC lib in QT einbinden

Verfasst: 29. November 2016 07:56
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

Re: MSVC lib in QT einbinden

Verfasst: 29. November 2016 19:12
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);
}

Re: MSVC lib in QT einbinden

Verfasst: 29. November 2016 20:05
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

Re: MSVC lib in QT einbinden

Verfasst: 30. November 2016 06:19
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.

Re: MSVC lib in QT einbinden

Verfasst: 30. November 2016 12:17
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