2016-10-03 31 views
0

我添加了一些庫,共享和靜態,並讓他們工作,以便我可以在桌面應用程序中使用它們。但是,當我嘗試在另一個靜態庫或另一個共享庫中的共享庫中使用靜態庫時,似乎無法工作。 我得到的錯誤無法打開包含文件mylibrary.h:沒有這樣的文件或目錄C++不能在其他庫中使用庫

有沒有辦法解決它?如果不是,什麼是結構項目/圖書館的最佳方式。這似乎是非常有限的是,圖書館不能使用其他庫

這是我的應用程序的.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_2

SharedLib的的.pro
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() 
{ 
} 
+2

線索出現錯誤:您是否正確設置了包含路徑,以便mylibrary.h可以找到? – auburg

+0

我將添加我的.pro – chrise

+0

我使用相同的包含路徑,我使用它的主要應用程序 – chrise

回答

1

INCLUDEPATH看起來不錯,所以很可能問題是出在老Makefile文件。你應該運行qmake爲你更新的.pro文件生成適當的Makefile。

請到QT Creator中的Build -> Run qmake來做到這一點。

+1

我沒有意識到我必須爲每個項目單獨運行qmake。我爲它們逐一運行,並且工作。謝謝 – chrise