Qmakeプロジェクトへのインクルードに問題があります。私の.proファイルには次のものがあります:
INCLUDEPATH += "C:\OpenCV\build\include"
そして私のcppで:
#include <opencv\cv.h>
コンパイラーはエラーを示します。
インクルードファイルを開けません: 'opencv\cv.h':そのようなファイルまたはディレクトリはありません
しかし、私がこれを私のcppで書くと:
#include "C:\OpenCV\build\include\opencv\cv.h"
できます!
Qt Creator内からプロジェクトをビルドします。私は何を間違えていますか?
Proファイルの変更を検証するには、qmake(build-> run qmake)を実行する必要があります。 Qt creator外部ライブラリの追加(まだ:インクルードファイルを開けません: 'GL/glew.h')
これが私のプロファイルの1つです。
# Blah Application
TEMPLATE = app
CONFIG += qt console staticlib debug_and_release
QT -= gui
QT += network sql xml
TARGET = blah
CONFIG(debug, debug|release){
DESTDIR = debug
LIBS += -L../../../lib/core/debug -lcore
} else {
DESTDIR = release
LIBS += -L../../../lib/core/release -lcore
}
DEPENDPATH += . ../../lib ../../../lib/core
INCLUDEPATH += . ../../lib ../../../lib/core
# Library files
HEADERS += mtBlahRTP.h
SOURCES += mtBlahRTP.cpp
# Input
HEADERS +=
SOURCES += main.cpp
インクルードパスは、libファイルのRELATIVEディレクトリを指します。 mtBlahRTP.hおよびmtBlahRTP.cppは../../libにあります
作成している唯一の問題は、OpenCVライブラリを誤ってリンクしていることです。ここに記載されている他の回答は機能する場合と機能しない場合がありますが、Qt Creator内の「Add Library」ウィザードを使用してこの問題を解決する確実な方法を別のスレッドに投稿しました: https://stackoverflow.com/a/ 51914928/10245006
私は2つのステップを実行する必要がありました:qmakeを(再)実行し、プロジェクト全体を再ビルドします-その場合のみ、INCLUDEPATH設定が正しく考慮されました。 (Windows上のQtCreator 3.5および3.6(Qt 5.5およびQt 5.6)を使用。)
同様の問題に遭遇しましたが、QtCreator IDEはqmakeの結果を再読み込みせず、「開くことができません」というメッセージを更新していません。問題のファイルを閉じて、再度開く-エラーが表示されなくなっていることがわかります。
エラーが発生していました:
canserialcomm.o: In function `CanSerialComm::CanSerialComm()':
canserialcomm.cpp:(.text+0xc1): undefined reference to `vtable for CanSerialComm'
原因は、そのコンストラクタが宣言されているcanserialcomm.h
が見つからなかったことが原因であることがわかりました。これは、プロジェクトファイルでINCLUDEPATH
がそのヘッダーファイルを含むディレクトリを指しているにもかかわらずです:
INCLUDEPATH += . \
..
これを修正するには、ヘッダーファイルを明示的に指定する必要がありました。追加した:
HEADER += ../canserialcomm.h
いくつかのことをする必要があります。最初に、.proファイルでは、次のように、引用符が一度に2つのバックスラッシュを必要とします。
INCLUDEPATH += "C:\\OpenCV\\build\\include\\opencv\\cv.h"
また、次のように.cppファイルの#include
にフロントスラッシュが必要です。
#include <opencv/cv.h>
これが完了したら、ビルドフォルダーを削除します。これは、build-untitled-Desktop_Qt_5_7_0_MSVC2015_32bit-Release
タイプの非常に複雑な名前を持つフォルダーです。次に、[ビルド]メニューで[qmakeの実行]を押します。これをすべて完了したら、正常にコンパイルされるはずです。
Windowsでは、INCLUDEPATH変数に追加される各ディレクトリの前に-Iを削除する必要があります。例:窓の下:
INCLUDEPATH += "C:\lib\boost_1_61_0" (back-slash)
LinuxおよびMacの場合:
INCLUDEPATH += -I"$$(HOME)/lib/boost_1_61_0" (note the -I and forward-slash)
異なるqmakeバージョンに依存するかどうかはわかりません。しかし、qmakeコマンドを終了した後、Makefileをチェックすると、二重の-Iが問題になります。
どういうわけか、INCLUDEPATH + =がいくつかあると動作しませんでした。ものを1つにまとめると、突然機能しました。
Windowsでmsvcを使用するqt creatorの場合は、二重バックスラッシュを使用する必要があります。 INCLUDEPATH + = C:\\ libcurl \\ libcurl-vc-x64-release-dll-ipv6-sspi-winssl \\ include
これで問題が解決します。