使用 OpenCV 3.0.0 的 Qt 5.6 未找到 DLL 入口点

Posted

技术标签:

【中文标题】使用 OpenCV 3.0.0 的 Qt 5.6 未找到 DLL 入口点【英文标题】:DLL entry point not found Qt 5.6 with OpenCV 3.0.0 【发布时间】:2015-10-06 01:52:41 【问题描述】:

在 QtCreator 中运行一个简单的 OpenCV 应用程序时,我遇到了一个令人讨厌的错误。首先:我使用的是 MSVC2013 64bit,自己用 Cuda 和 Qt 构建 Qt5.6 和 OpenCV3.0.0。我在 MSVC2013 中测试了构建,它运行良好。 现在切换到 QtCreator,我将 INCLUDEPATH 和 LIBS 添加到一个普通的 C++ 项目中,保存 .pro 文件并运行 qmake。工作。 现在我包含了 highgui.hpp、core.hpp 并编写了简单的图像加载和显示应用程序。见代码

#include <iostream>
#include "opencv2/core/core.hpp"
#include "opencv2/highgui/highgui.hpp"

using namespace std;

int main()

    cout << "Hello World!" << endl;
    cv::Mat Image;
    cv::namedWindow("Test");
    return 0;

现在您想知道为什么我没有加载任何图像。好吧,我可以使用 cv::namedWindow 追踪错误。 构建项目后,我运行调试器,突然在单独的窗口中出现此错误:

The inferior stopped because it triggered an exception.
Stopped in thread 0 by: exception at 0x7ffa6f8dc4e0, code 0xc0000139:
DLL entry point not found, flags=0x1 (Execution cannot be continued)

我可以构建项目,但我无法运行它。正如我所说,我可以在 MSVC2013 IDE 中构建和运行完全相同的应用程序而不会出现任何错误。我已经在网上搜索过,但似乎只有我有这个问题。

这是我的 .pro 代码

TEMPLATE = app
CONFIG += console
CONFIG -= app_bundle
CONFIG -= qt

SOURCES += main.cpp

include(deployment.pri)
qtcAddDeployment()

INCLUDEPATH += C:\\OpenCV300C\\include \
    C:\\OpenCV300\\include\\opencv \
    C:\\OpenCV300\\\include \\opencv2

LIBS += -LC:\\OpenCV300\\x64\\vc12\\lib \
    -lopencv_calib3d300d \
    -lopencv_core300d \
    -lopencv_features2d300d \
    -lopencv_flann300d \
    -lopencv_hal300d \
    -lopencv_highgui300d \
    -lopencv_imgcodecs300d \
    -lopencv_imgproc300d \
    -lopencv_ml300d \
    -lopencv_objdetect300d \
    -lopencv_photo300d \
    -lopencv_shape300d \
    -lopencv_stitching300d \
    -lopencv_superres300d \
    -lopencv_ts300d \
    -lopencv_video300d \
    -lopencv_videoio300d \

我正在使用 Win8.1、MSVC2013 64 位、Qt5.6 和 OpenCV3.0.0(自己构建)

由于我确定 OpenCV 和 Qt 的构建是正确的,我怀疑自己有错误。但我不知道我做错了什么。 有趣的是,我能够通过 Mat 显示图片并将其放入 QImage 并通过 Pixmap 将其显示在标签上。但我想知道,为什么 cv::namedWindow 不起作用。

我还在另一个线程中注意到我必须构建 Qt 静态。 MSVC2013 - Entry Point Not Found

这是要走的路吗?

编辑: 现在事情开始变得有趣了。我实际上能够从 QtCreator 外部运行由 qt 构建的程序(只需从资源管理器中运行 .exe)。所以我很确定一切都很好。但是,在运行应用程序时,QtCreator 肯定会出现问题。对此有什么想法吗?

【问题讨论】:

【参考方案1】:

我发现了问题,我想和你分享这个问题,以防有人遇到同样的问题。

我在运行环境下的项目选项卡中将运行环境从“构建环境”更改为“系统环境”(我猜这是它的英文名称,因为我的 IDE 是德语)。现在我可以从 IDE 内部运行应用程序,我很高兴。

我还没有发现问题到底出在哪里,但现在我很满意。

【讨论】:

以上是关于使用 OpenCV 3.0.0 的 Qt 5.6 未找到 DLL 入口点的主要内容,如果未能解决你的问题,请参考以下文章

opencv配置过程 (cmake,vs2013,qt 5.4)

编译 private.hpp OpenCV 3.0.0-rc1 时出错

如何在 Qt 应用程序中通过终端命令运行分离的应用程序?

OpenCV:在 QImage 上使用 GaussianBlur 或 Sobel 导数

使用 Qt 5.5 或 5.6 打印网页的 HTML/内容

如何修复 Qt 5.6 beta 和 VS2015 的 QT VS 插件?