2016-10-03 23 views
0

共有ライブラリと静的ライブラリの両方を追加してデスクトップアプリケーションで使用できるようにしました。しかし、別の静的ライブラリや別の共有ライブラリの共有ライブラリでスタティックライブラリを使用しようとすると、動作しないように見えます。 エラーが表示されます。ファイルmylibrary.hを開くことができません。そのようなファイルまたはディレクトリはありません。C++は他のライブラリではライブラリを使用できません

回避方法はありますか?そうでない場合、プロジェクト/ライブラリを構築する最良の方法は何ですか?これは非常にそれはカントの使用他のライブラリをライブラリことを制限しているようだ

これは私が彼ライブラリ

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を使用することができます私のアプリケーションの.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はOKになりますので、おそらく問題は古いMakefileです。更新された.proファイルに適切なMakefileを生成するには、qmakeを実行する必要があります。

QT CreatorのBuild -> Run qmakeにアクセスしてください。

+1

私はそれぞれのプロジェクトごとにqmakeを実行しなければならないことに気付きませんでした。私はそれらを一つ一つ一つずつ走らせて働かせました。どうも – chrise

関連する問題