2016-12-01 4 views
0

QtProjectにはOpenCVをいくつか使用しています。他のコンピュータで実行するには.exeを作成します。OpenCVを使ってQtから.exeを作る方法

Qtライブラリでもwindeployqt.exeができませんが、手動でライブラリをコピーするとQtが動作しています。しかし、OpenCVをどうやって稼働させるのか分かりません。 私の.proファイルは次のようになっています。この場合

#------------------------------------------------- 
# 
# Project created by QtCreator ... 
# 
#------------------------------------------------- 

QT  += core gui 

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets 

TARGET = name01 
TEMPLATE = app 

INCLUDEPATH += C:/opencv-qt/install/include 
LIBS += -L"C:/opencv-qt/install/x86/mingw/bin" 
LIBS += -lopencv_core310 -lopencv_highgui310 -lopencv_imgproc310 -lopencv_imgcodecs310 

SOURCES += main.cpp\ 
     widget.cpp 

HEADERS += widget.h 

FORMS += widget.ui 

、私はそれ.EXE実行しようlibopencv_imgcodecs310は自分のコンピュータに不足していると述べています。 は、私はパスを変更する必要があると思いますので、私はこれを試してみました:

INCLUDEPATH += /include 
LIBS += -L"/bin" 
LIBS += -lopencv_core310 -lopencv_highgui310 -lopencv_imgproc310 -lopencv_imgcodecs310 

とコピービン、プロジェクトにフォルダが含まれます。しかし、エラーメッセージでもコンパイルされませんでした。

cannot find -lopencv_core310 
cannot find -lopencv_highgui310 
cannot find -lopencv_imgproc310 
cannot find -lopencv_imgcodecs310 

他のフォーラムでいくつか質問がありましたが、回答はありませんでした。

私は時間がありませんでしたので、私は今この問題に取り組んできました。 のQt 5.8は問題になることはありませんこれは、リリースしたが、私のアプリケーションが大きくなっ、今.PROは次のようになりました。

#------------------------------------------------- 
# 
# Project created by QtCreator ... 
# 
#------------------------------------------------- 

QT  += core gui 

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets printsupport 

TARGET = name01 
TEMPLATE = app 

INCLUDEPATH += C:/opencv-qt/install/include 
LIBS += -L"C:/opencv-qt/install/x86/mingw/bin" 
LIBS += -lopencv_core310 -lopencv_highgui310 -lopencv_imgproc310 -lopencv_imgcodecs310 

SOURCES += main.cpp\ 
     widget.cpp\ 
     qcustomplot.cpp 

HEADERS += widget.h 
     qcustomplot.h 

FORMS += widget.ui 

はだから今、それは私のコンピュータ上でも動作しません。私はそれ.EXEを実行しようとした場合 が言っている:

the procedure entry point __gxx_personality_v0 could not be located 
in the dynamic link library libstdc++-6.dll 

私も依存関係ウォーカーを試してみましたが、それはそれは彼らがしている場合でもlibopencv_imgprocs310.dll、libopencv_core310.dllとlibopencv_imgcodecs310.dllを見つけることができなかっただけと言います.exeと同じフォルダ。私は新しいものを作る必要がある場合、私は今、どん​​な困難のためにとても申し訳ありませんが、質問を管理したりする方法を正確に知らない


+1

パス '/'の絶対パスで始まるように見えます。ルートフォルダに 'bin'と' include'ディレクトリがありますか?あるいは、例えば '$$ PWD/bin'と' $$ PWD/include'を意味するでしょうか? – hyde

+0

ありがとう、私はそれが絶対パスを意味するのか分からなかった。しかし、私が '$$ PWD/include'または' include 'を使うと同じ結果になる – MrKew

+0

私は長い時間の後にこれに戻りました。私は今質問をどのように正確に管理すべきか、あるいは新しいものを作るべきかどうかわかりません私は質問を変更しました。申し訳ありませんが、何か問題があります。 – MrKew

答えて

0

OpenCVのlibファイルがまだC:/ opencv-qt/install/x86/mingw/binにあり、コードがコンパイルされている場合は、コードで使用されている.dllファイルをexeファイルを含むフォルダにコピーしてみてください。または環境変数にC:/ opencv-qt/install/x86/mingw/binを追加します。

+0

はい、.dllをプロジェクトフォルダにコピーすることは、自分のコンピュータでは有効ですが、他のコンピュータでは機能していません。 – MrKew

+0

他のコンピュータで同じプロジェクトをビルドするか、exeファイルを他のコンピュータにコピーして実行しますか?どのコンピュータに関係なく、exeファイルを実行すると、動的にリンクされたライブラリを検索します。ロードされたexeファイルが最初に見つかるディレクトリです。そこにあなたのopencv dllを入れてみてください。あなたのプロジェクトフォルダは必ずしもexeがあるフォルダではありません。 – Yancey

+0

私のコンピュータでそれを実行することは問題ありません、私は他のコンピュータでその.exeを実行したいです。私の.exeと同じフォルダに.dllをコピーしても、qtは正常に動作しますが、OpenCV関数は何もしません。 – MrKew

0

あなたのコンパイラは.libファイルに興味がありますので、dllではなくlibファイルを含むフォルダを追加する必要があります。 Dllは実行中に必要となるため、それらを展開にコピーする必要があります。窓の下

マイボイラープレートOpenCVのセクションでは、この(私の代わりに別のモジュールopencv_worldを使用するように注意してください)

win32 { 
    OPENCVFOLDER = D:/_CODE_/_EXTERNAL_/OpenCV/my_git_build/ 
    OPENCVVERSION = 310 
    INCLUDEPATH += $${OPENCVFOLDER}/x64/install/include 

    CONFIG(release, debug|release) { 
     LIBS += -L$${OPENCVFOLDER}/x64/lib/Release 
     LIBS += -lopencv_world$${OPENCVVERSION} 
    } 
    CONFIG(debug, debug|release) { 
     DEFINES += DEBUG_MODE 
     LIBS += -L$${OPENCVFOLDER}/x64/lib/Debug 
     LIBS += -lopencv_world$${OPENCVVERSION}d 
    } 
} 
+0

opencvフォルダに.libファイルがないので、あなたのQt CreatorにOpenCVをどのようにインストール(追加)したのかを教えてください。 – MrKew

関連する問題