【发布时间】:2014-10-15 01:43:07
【问题描述】:
我对此感到困惑:
我的 Qt 创建器是 32 位的,而我的 Windows 是 64 位的。在 .pro 文件中,我应该使用 win 32{...} 还是 win 64 {...}?如果我想链接 OpenCV 库,我应该使用哪个,x64 还是 x86?
如果你能给我一点解释就更好了。
谢谢!
【问题讨论】:
标签: windows qt opencv x86 64-bit
我对此感到困惑:
我的 Qt 创建器是 32 位的,而我的 Windows 是 64 位的。在 .pro 文件中,我应该使用 win 32{...} 还是 win 64 {...}?如果我想链接 OpenCV 库,我应该使用哪个,x64 还是 x86?
如果你能给我一点解释就更好了。
谢谢!
【问题讨论】:
标签: windows qt opencv x86 64-bit
Qmake 有一些平台和编译器变量,例如:win32、unix、win32-msvc,... 可以在安装的 Qt 目录的 mkspecs 目录中找到。您可以拥有基于平台和编译器的条件 .pro 文件。例如,您可以拥有能够在 Windows 和 Linux 上编译的项目。您可以有条件地链接到外部库:
win32: LIBS += -L$$PWD/Windows/Path/To/Library/ -lTheLibrary
else:unix: LIBS += -L$$PWD/Linux/Path/To/Library/ -lTheLibrary
如果您想检测您是在 Windows 上编译 32 位还是 64 位编译器并相应地链接到相关库,您可以使用:
win32:contains(QMAKE_HOST.arch, x86_64) {
LIBS += -L$$PWD/Path/To/Library_64Bit/ -lTheLibrary
} else {
LIBS += -L$$PWD/Path/To/Library_32Bit/ -lTheLibrary
}
【讨论】:
有很多帖子涵盖了这些差异,但要记住的重要部分是您必须在 compiler 和 3rd 之间匹配架构您想使用的派对库。
例如,我有一台装有 Windows 64 位的计算机,我使用基于 Qt 5.3.1 的 Qt Creator 3.2.1(开源)( MSVC 2010,32 位)。由于我的编译器是 32 位的,因此使用 32 位版本的 OpenCV 库很重要。
所以我将在 .pro 文件中使用:
LIBS += -L"C:\\opencv\\build\\x86\\vc12\\lib" \
-lopencv_world300d
【讨论】: