Qt 上的 dlib Windows。程序意外结束
dlib on Qt Windows. The program has unexpectedly finished
我尝试在 Windows 上的 Qt 项目中使用 dlib。下载后我在 dlib 根目录下做了这个:
cd examples
mkdir build
cd build
cmake .. -G"Visual Studio 14 2015 Win64"
cmake --build . --config Release
还有这个(同样在 dlib root 中):
mkdir build
cd build
cmake .. -G"Visual Studio 14 2015 Win64" -DCMAKE_INSTALL_PREFIX=D:\dlib_build
cmake --build . --config Release --target install
我的 .pro 文件:
QT += core
QT -= gui
CONFIG += c++11
TARGET = dlibWin2
CONFIG += console
CONFIG -= app_bundle
TEMPLATE = app
SOURCES += main.cpp
INCLUDEPATH += "D:\dlib_build\include"
LIBS += -L"D:\dlib_build\lib" -ldlib
QMAKE_CXXFLAGS_RELEASE += /arch:AVX
QMAKE_CXXFLAGS += -DDLIB_JPEG_SUPPORT
main.cpp:
#include <QCoreApplication>
#include <dlib/image_processing/frontal_face_detector.h>
#include <dlib/image_processing/render_face_detections.h>
#include <dlib/image_processing.h>
#include <dlib/gui_widgets.h>
#include <dlib/image_io.h>
#include <iostream>
using namespace dlib;
using namespace std;
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
try
{
frontal_face_detector detector = get_frontal_face_detector();
}
catch (exception& e)
{
cout << "\nexception thrown!" << endl;
cout << e.what() << endl;
}
return a.exec();
}
MSVC2015 64 位版本的编译输出:
D:\dlib_build\include\dlib\config.h:19: Warning: C4005: DLIB_JPEG_SUPPORT
MSVC2015 64 位版本的运行时输出:
The program has unexpectedly finished... Exited with code -1073741795
请注意,我是在 Windows 重新安装之后执行此操作的,在此之前我遇到了完全相同的问题。
如何解决这个问题或如何在 Windows 上的 Qt 中使用 dlib?
因为您没有看到异常输出 - 问题应该在 /arch:AVX 部分。可能是您的处理器不支持 AVX 指令。在 x64 模式下,SSE2 将自动启用
试试这个 .pro 文件:
QT += core
QT -= gui
CONFIG += c++11
TARGET = dlibWin2
CONFIG += console
CONFIG -= app_bundle
TEMPLATE = app
SOURCES += main.cpp
INCLUDEPATH += "D:\dlib_build\include"
LIBS += -L"D:\dlib_build\lib" -ldlib
无需重建示例和dlib。
-DDLIB_JPEG_SUPPORT 已删除,因为您有 C4005 警告。
你离成功还差一步!
我尝试在 Windows 上的 Qt 项目中使用 dlib。下载后我在 dlib 根目录下做了这个:
cd examples
mkdir build
cd build
cmake .. -G"Visual Studio 14 2015 Win64"
cmake --build . --config Release
还有这个(同样在 dlib root 中):
mkdir build
cd build
cmake .. -G"Visual Studio 14 2015 Win64" -DCMAKE_INSTALL_PREFIX=D:\dlib_build
cmake --build . --config Release --target install
我的 .pro 文件:
QT += core
QT -= gui
CONFIG += c++11
TARGET = dlibWin2
CONFIG += console
CONFIG -= app_bundle
TEMPLATE = app
SOURCES += main.cpp
INCLUDEPATH += "D:\dlib_build\include"
LIBS += -L"D:\dlib_build\lib" -ldlib
QMAKE_CXXFLAGS_RELEASE += /arch:AVX
QMAKE_CXXFLAGS += -DDLIB_JPEG_SUPPORT
main.cpp:
#include <QCoreApplication>
#include <dlib/image_processing/frontal_face_detector.h>
#include <dlib/image_processing/render_face_detections.h>
#include <dlib/image_processing.h>
#include <dlib/gui_widgets.h>
#include <dlib/image_io.h>
#include <iostream>
using namespace dlib;
using namespace std;
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
try
{
frontal_face_detector detector = get_frontal_face_detector();
}
catch (exception& e)
{
cout << "\nexception thrown!" << endl;
cout << e.what() << endl;
}
return a.exec();
}
MSVC2015 64 位版本的编译输出:
D:\dlib_build\include\dlib\config.h:19: Warning: C4005: DLIB_JPEG_SUPPORT
MSVC2015 64 位版本的运行时输出:
The program has unexpectedly finished... Exited with code -1073741795
请注意,我是在 Windows 重新安装之后执行此操作的,在此之前我遇到了完全相同的问题。
如何解决这个问题或如何在 Windows 上的 Qt 中使用 dlib?
因为您没有看到异常输出 - 问题应该在 /arch:AVX 部分。可能是您的处理器不支持 AVX 指令。在 x64 模式下,SSE2 将自动启用
试试这个 .pro 文件:
QT += core
QT -= gui
CONFIG += c++11
TARGET = dlibWin2
CONFIG += console
CONFIG -= app_bundle
TEMPLATE = app
SOURCES += main.cpp
INCLUDEPATH += "D:\dlib_build\include"
LIBS += -L"D:\dlib_build\lib" -ldlib
无需重建示例和dlib。 -DDLIB_JPEG_SUPPORT 已删除,因为您有 C4005 警告。
你离成功还差一步!