21

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 内からプロジェクトをビルドします。私は何を間違っていますか?

4

12 に答える 12

8

#includeあなたの問題は、裸のディレクティブにバックスラッシュがあると未定義の動作であるという事実に関連している可能性があります。

以下をせよ。

  1. インクルードを次のように置き換えます

    #include <opencv/cv.h>
    

    スラッシュに注意してください。

  2. Qt Creator が作成したシャドウ ビルド ディレクトリを削除します。プロジェクトディレクトリの上にあり、名前はbuild-.

  3. プロジェクトを再構築します。

これにより、qmake の再実行が処理されることに注意してください。

于 2013-09-27T13:22:13.303 に答える
1

I ran into a similar issue and what I found is that the QtCreator IDE is not re-reading the results of qmake and updating the "Cannot open" message. You need to close the offending file and re-open it - then you'll see that it no longer displays the error.

于 2015-08-27T20:41:43.630 に答える
1

qmake を (再) 実行し、プロジェクト全体を再構築するという 2 つの手順を実行する必要がありました。その後、INCLUDEPATH 設定が正しく考慮されました。(Windows 上の QtCreator 3.5 および 3.6 (Qt 5.5 および Qt 5.6) を使用)

于 2016-02-19T12:11:07.843 に答える
0

いくつかのことを行う必要があります。まず、.pro ファイルでは、次のように、一度に 2 つのバックスラッシュを引用符で囲む必要があります。

INCLUDEPATH += "C:\\OpenCV\\build\\include\\opencv\\cv.h"

#includeまた、次のように .cpp ファイルにフロントスラッシュが必要です。

#include <opencv/cv.h>

これが完了したら、ビルド フォルダーを削除します。という非常に複雑な名前のフォルダbuild-untitled-Desktop_Qt_5_7_0_MSVC2015_32bit-Releaseです。次に、[ビルド] メニューで [Run qmake] を押します。これをすべて実行すると、正常にコンパイルされるはずです。

于 2017-01-12T13:48:27.313 に答える
0

Windows で msvc を使用して qt クリエーターを使用する場合は、バックスラッシュを 2 つ使用する必要があります。このように: INCLUDEPATH += C:\\libcurl\\libcurl-vc-x64-release-dll-ipv6-sspi-winssl\\include

これで問題は解決します。

于 2016-06-15T08:28:36.810 に答える
0

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 が問題になります。

于 2016-08-30T15:28:07.623 に答える
0

エラーが発生しました:

canserialcomm.o: In function `CanSerialComm::CanSerialComm()':
canserialcomm.cpp:(.text+0xc1): undefined reference to `vtable for CanSerialComm'

canserialcomm.hその原因は、そのコンストラクターが宣言されている場所を見つけることができなかったことが判明しました。INCLUDEPATHこれは、プロジェクト ファイルでそのヘッダー ファイルを含むディレクトリを指しているにもかかわらずでした。

INCLUDEPATH += . \
        ..

これを修正するために私がしなければならなかったことは、ヘッダー ファイルを明示的に指定することです。追加した:

HEADER += ../canserialcomm.h
于 2016-03-30T09:47:02.337 に答える