Qt Creator : Adding an external library (header file not found) - c++

This is my external library location in my Qt project (named contr):
This is my makefile :
QT += core gui
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
TARGET = contr
TEMPLATE = app
INCLUDEPATH += 3rdparty/libs/libusb
SOURCES += main.cpp\
mainwindow.cpp
HEADERS += mainwindow.h
FORMS += mainwindow.ui
LIBS += -L"3rdparty/libs/libusb" -llibusb
In a file, I have this include :
#include <libusb.h>
When I compile, I get the following error :
mainwindow.cpp:3: erreur : C1083: Cannot open include file: 'libusb.h': No such file or directory
EDIT :
I work on Windows

Related

QT creator using static library

I am trying to follow qt creators instructions to create static libraries.
https://wiki.qt.io/How_to_create_a_library_with_Qt_and_use_it_in_an_application
it shows the below for lines to include in my libraries .pro
TEMPLATE = lib
CONFIG += staticlib
# Input
HEADERS += test.h
SOURCES += test.cpp
and for the apps .pro
TEMPLATE = app
TARGET =
CONFIG += console
# Input
SOURCES += main.cpp
INCLUDEPATH += ../staticLibrary
LIBS += -L../staticLibrary/debug -lstaticLibrary
I have
library's .pro
QT -= gui
TARGET = test
TEMPLATE = lib
CONFIG += staticlib
SOURCES += test.cpp
HEADERS += test.h
unix {
target.path = /usr/lib
INSTALLS += target
}
app's .pro
QT += core
QT -= gui
CONFIG += c++11
TARGET = TestLink
CONFIG += console
CONFIG -= app_bundle
TEMPLATE = app
SOURCES += main.cpp
INCLUDEPATH += ../test // ADDED BY ME
LIBS += -L../test/debug -ltest //ADDED BY ME
// LIBS += -L../test/debug -ltest.a //ALSO TRIED .a
My library is test. Both folder, the main app and the library are in the same folder. When I now include the .h
#include "test.h"
I get
C:\CPP\Test\TestLink\main.cpp:3: error: C1083: Cannot open include file: 'test.h': No such file or directory
It seems I am following the isntructions here. What am I missing?
This here also suggests the two lines I added should do the job
Using a static library in Qt Creator

LNK2001: Unresolved external symbol when using qwt plot in Qt creator

I am subclassing QwtPlot. I have the following error:
moc_myplot.obj:-1: error: LNK2001: unresolved external symbol "public: static struct QMetaObject const QwtPlot::staticMetaObject" (?staticMetaObject#QwtPlot##2UQMetaObject##B)
I have tried to the following things: run qmake, rebuild, clean, delete debug folder, recompile qwt library. That doesn't help. Here is minimal code:
myplot.h:
#ifndef MYPLOT_H
#define MYPLOT_H
#include <QObject>
#include <qwt_plot.h>
class MyPlot : public QwtPlot
{
Q_OBJECT
public:
MyPlot();
};
#endif // MYPLOT_H
myplot.cpp:
#include "myplot.h"
MyPlot::MyPlot()
{
}
Here is .pro file:
#-------------------------------------------------
#
# Project created by QtCreator 2015-06-22T19:33:24
#
#-------------------------------------------------
QT += core gui
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
TARGET = MyPlot
TEMPLATE = app
SOURCES += main.cpp\
mainwindow.cpp \
myplot.cpp
HEADERS += mainwindow.h \
myplot.h
win32:CONFIG(release, debug|release): LIBS += -L$$PWD/../../../../../qwt-6.1.2/lib/ -lqwt
else:win32:CONFIG(debug, debug|release): LIBS += -L$$PWD/../../../../../qwt-6.1.2/lib/ -lqwtd
else:unix: LIBS += -L$$PWD/../../../../../qwt-6.1.2/lib/ -lqwt
INCLUDEPATH += $$PWD/../../../../../qwt-6.1.2/include
DEPENDPATH += $$PWD/../../../../../qwt-6.1.2/include
I am using Qt Creator 3.4.1 Based on Qt 5.4.2 (MSVC 2013, 32 bit). Kit: Desktop Qt 5.4.2 MSVC2013 64bit. Compiler: Microsof Visual C++ Compiler 12.0(amd64). If I comment Q_OBJECT macro in myplot.h everything is ok. I can use qwt_plot without subclassing, so that this->setCentralWidget(new QwtPlot()); line in mainwindow.cpp is ok.
It seems this is an old issue that was present in at least version 4.6.
The workaround is basically a preprocessor define of QWT_DLL from the "very lowest library that calls QWT".

How to include Winpcap to Qt creator?

I tried to use different combination in .pro file but always get these errors :
error: C2065: 'PCAP_SRC_IF_STRING' : undeclared identifier
error: C3861: 'pcap_findalldevs_ex': identifier not found
Here is my .pro file :
QT += core gui
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
TARGET = snif_del
TEMPLATE = app
LIBS += WS2_32.lib
INCLUDEPATH += D:/libs/WpdPack/Include
LIBS += -L D:/libs/WpdPack/Lib/ -lwpcap -lpacket
SOURCES += main.cpp\
mainwindow.cpp
HEADERS += mainwindow.h
FORMS += mainwindow.ui
Also i added #include "pcap.h" to my code.
Your .pro file should look like this:
INCLUDEPATH += D:/libs/WpdPack/Include
LIBS += "-LD:/libs/WpdPack/Lib" -lwpcap -lws2_32
If your program uses Win32 specific functions of WinPcap, add
DEFINES += WPCAP
If your program uses the remote capture capabilities of WinPcap, add
DEFINES += HAVE_REMOTE
In your code you should add
#include <winsock2.h>
#include <pcap.h>

How to use FTD2xx library on QtCreator (with MSVC2012 compiler)

I have trouble in making an application which communicates FTDI devices via D2xx driver.There is some example project for Visual Studio in ftdi's website. But there isn't for QtCreator. I chose QtCreator as c++ IDE because my application needs Qt framework.
I put ftd2xx.h and ftd2xx.lib in the Qt project directory.
(ftd2xx.lib is static library, which were originally located in [download-folder]\CDM v2.08.30 for Windows 8.1\Static\i386)
When sample source code was compiled, I got following error message.
Error message when I use .pro file(1).
LNK1104: cannot open file 'ftd2xx.lib'
Error message when I use .pro file(2).
error: Assignment needs exactly one word on the left hand side.
How should I correct Qt project setup in order to utilizes ftd2xx library?
My source code and .pro file is here.
[main.cpp]
#include <QCoreApplication>
#include <windows.h>
#include "ftd2xx.h"
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
FT_HANDLE ftHandle;
FT_STATUS ftStatus;
ftStatus = FT_Open(0,&ftHandle);
return a.exec();
}
[.pro file if the checkbox is enabled] ---(1)
#-------------------------------------------------
#
# Project created by QtCreator 2014-02-11T18:51:08
#
#-------------------------------------------------
QT += core
QT -= gui
TARGET = D2XXtest
CONFIG += console
CONFIG -= app_bundle
TEMPLATE = app
SOURCES += main.cpp
HEADERS += ftd2xx.h
win32:CONFIG(release, debug|release): LIBS += -L$$PWD/ -lftd2xx
else:win32:CONFIG(debug, debug|release): LIBS += -L$$PWD/ -lftd2xxd
INCLUDEPATH += $$PWD/
DEPENDPATH += $$PWD/
win32-g++:CONFIG(release, debug|release): PRE_TARGETDEPS += $$PWD/libftd2xx.a
else:win32-g++:CONFIG(debug, debug|release): PRE_TARGETDEPS += $$PWD/libftd2xxd.a
else:win32:!win32-g++:CONFIG(release, debug|release): PRE_TARGETDEPS += $$PWD/ftd2xx.lib
else:win32:!win32-g++:CONFIG(debug, debug|release): PRE_TARGETDEPS += $$PWD/ftd2xxd.lib
[.pro file if the checkbox is NOT enabled] ---(2)
#-------------------------------------------------
#
# Project created by QtCreator 2014-02-11T18:51:08
#
#-------------------------------------------------
QT += core
QT -= gui
TARGET = D2XXtest
CONFIG += console
CONFIG -= app_bundle
TEMPLATE = app
SOURCES += main.cpp
HEADERS += ftd2xx.h
win32: LIBS += -L$$PWD/ -lftd2xx
INCLUDEPATH += $$PWD/
DEPENDPATH += $$PWD/
win32:!win32-g++ PRE_TARGETDEPS += $$PWD/ftd2xx.lib
else:win32-g++: PRE_TARGETDEPS += $$PWD/libftd2xx.a
Any help would be appreciated. Thanks in advance.
[Note]
OS: Windows 8.1
IDE: Qt Creator 3.0.0
Compiler: MSVC2012(32bit)
Target device: ft232hl
[Additional Note]
The configuration of "Add Library" is following.
If I enable the checkbox "Add "d" suffix for debug version, then I got error message about LNK1104. Otherwise, I got different error message.
My hunch is that you've made a typo in your error message, and the real error message reads as follows:
LNK1104: cannot open file 'ftd2xxd.lib'
See that d there? It doesn't belong, there's no ftd2xxd.lib. You need to change any references to ftd2xxd.lib back to ftd2xx.lib, re-run qmake, and you should be all set. Otherwise your .pro file seems correct.
After your edit, you gave a .pro file with the "checkbox enabled". That's certainly not true, since the contents you show imply that the checkbox is disabled, not enabled.
Anyway, we don't care what the dialog box settings are. Just show the actual .pro file that you really use, because so far I don't know which one you do use, and I don't know if you've re-run qmake after the .pro file was changed.
Are you sure that the ftd2xx.lib file is actually in the same folder where the .pro file is?

Qt cannot open Lib file - LNK1104 Cannot open file 'DbManager.lib'

I am using QT Creator 2.7.0 based upon QT 5.0.2 on a Windows 7 machine and attempted to create a subdirs project with three sub-projects.
Project_Dir
- DbManager
- Gui
- Build
Using the example here How to use qmakes subdirs template, I created the Project files listed below, however, upon building I keep getting the error LNK1104 Cannot open file 'DbManager.lib'
My search usually yeilds results for Visual Studio type fixes, but no QT fixes
Project.pro
TEMPLATE = subdirs
SUBDIRS += \
DbManager \
Gui
CONFIG += ordered
SUBDIRS += Build
DbManager.pro
! include( ../common.pri ) {
error( Couldnt find the common.pri file! )
}
HEADERS += dbmanager.h
SOURCES += dbmanager.cpp
Gui.pro
! include( ../common.pri ) {
error( Couldnt find the common.pri file! )
}
QT += core gui
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
TARGET = target
SOURCES += main.cpp\
mainwindow.cpp
HEADERS += mainwindow.h
FORMS += mainwindow.ui
Build.pro
TEMPLATE = app
DEPENDPATH += ../Gui
INCLUDEPATH += ../Gui
DEPENDPATH += ../DbManager
INCLUDEPATH += ../DbManager
LIBS += -L../DbManager -L../Gui -lDbManager -lGui
SOURCES += main.cpp
TARGET = ../OptionsTrader
QT += widgets
The following "Common.pri" file, was also included:
INCLUDEPATH += . ..
WARNINGS += -Wall
TEMPLATE = lib
UI_DIR = uics
MOC_DIR = mocs
OBJECTS_DIR = objs
I got the same problem before, and I just copy the lib file into the project working directory,it worked.