c ++不能在其他库中使用库

时间:2016-10-03 07:52:27

标签: c++ qt

我添加了一些共享和静态库,并使它们工作,以便我可以在桌面应用程序中使用它们。但是,当我尝试在另一个静态库中使用静态库或在另一个似乎不起作用的共享库中使用共享库时。 我收到错误无法打开包含文件mylibrary.h:没有这样的文件或目录

周围有办法吗?如果没有,构建项目/库的最佳方法是什么。似乎非常有限,图书馆不能使用其他图书馆

这是我的应用程序的.pro,我可以使用他的库

QT += core
QT -= gui

CONFIG += c++11

TARGET = Test
CONFIG += console
CONFIG -= app_bundle

TEMPLATE = app

SOURCES += main.cpp

win32:CONFIG(release, debug|release): LIBS += -L$$PWD/../SharedLib/release/ -lSharedLib
else:win32:CONFIG(debug, debug|release): LIBS += -L$$PWD/../SharedLib/debug/ -lSharedLib

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

win32:CONFIG(release, debug|release): LIBS += -L$$PWD/../SharedLib_2/release/ -lSharedLib_2
else:win32:CONFIG(debug, debug|release): LIBS += -L$$PWD/../SharedLib_2/debug/ -lSharedLib_2

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

和SharedLib的.pro应该使用SharedLib_2

QT       -= gui

TARGET = SharedLib
TEMPLATE = lib

DEFINES += SHAREDLIB_LIBRARY

SOURCES += sharedlib.cpp

HEADERS += sharedlib.h\
        sharedlib_global.h

unix {
    target.path = /usr/lib
    INSTALLS += target
}

win32:CONFIG(release, debug|release): LIBS += -L$$PWD/../SharedLib_2/release/ -lSharedLib_2
else:win32:CONFIG(debug, debug|release): LIBS += -L$$PWD/../SharedLib_2/debug/ -lSharedLib_2

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

我通过自动添加库添加它们,并且线条相同......所以我希望这可以工作

包括

应用

#include <QCoreApplication>

#include "sharedlib.h"
#include "sharedlib_2.h"

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

    SharedLib sl;
    SharedLib_2 sl_2;

    return a.exec();
}

sharedLib

#include "sharedlib.h"

#include "sharedlib_2.h"  // ERROR HERE

SharedLib::SharedLib()
{
}

1 个答案:

答案 0 :(得分:1)

你的INCLUDEPATH看起来不错,所以问题可能在旧的Makefile中。您应该运行qmake为更新的.pro文件生成正确的Makefile。

转到QT Creator中的Build -> Run qmake进行操作。