【发布时间】:2013-12-28 17:04:47
【问题描述】:
我想在我的 Visual c++ Qt-add 项目中包含外部库。由于我的 Qt 项目管理器不起作用,我使用 Qt-creator 创建了一个简单的“模板”项目,并通过插件将 .pro 文件导入 Visual Studio。我已经在创建者的 pro 文件中添加了常用的库,并且我可以很好地构建,但是在 Visual Studio 中构建给我一个链接器错误:
Error 2 error LNK1104: cannot open file 'OpenCL.lib' D:\Qt\Qt5.2.0\Tools\QtCreator\bin\qtpnds\LINK
我尝试导入的完整 .pro 文件:
#-------------------------------------------------
#
# Project created by QtCreator 2013-12-28T17:27:01
#
#-------------------------------------------------
QT += core gui
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
TARGET = qtpnds
TEMPLATE = app
SOURCES += main.cpp\
mainwindowpnd.cpp
HEADERS += mainwindowpnd.h
FORMS += mainwindowpnd.ui
unix|win32: LIBS += -L$$PWD/C:/Program Files (x86)/Microsoft Visual Studio 11.0/VC/lib/ -lOpenCL
INCLUDEPATH += $$PWD/C:/Program Files (x86)/Microsoft Visual Studio 11.0/VC/include
DEPENDPATH += $$PWD/C:/Program Files (x86)/Microsoft Visual Studio 11.0/VC/include
unix|win32: LIBS += -L$$PWD/C:/Program Files (x86)/Microsoft Visual Studio 11.0/VC/lib/ -lFreeImage
INCLUDEPATH += $$PWD/C:/Program Files (x86)/Microsoft Visual Studio 11.0/VC/include
DEPENDPATH += $$PWD/C:/Program Files (x86)/Microsoft Visual Studio 11.0/VC/include
unix|win32: LIBS += -L$$PWD/C:/Program Files (x86)/Microsoft Visual Studio 11.0/VC/lib/ -lglew32
INCLUDEPATH += $$PWD/C:/Program Files (x86)/Microsoft Visual Studio 11.0/VC/include
DEPENDPATH += $$PWD/C:/Program Files (x86)/Microsoft Visual Studio 11.0/VC/include
unix|win32: LIBS += -L$$PWD/C:/Program Files (x86)/Microsoft Visual Studio 11.0/VC/lib/ -lglut32
INCLUDEPATH += $$PWD/C:/Program Files (x86)/Microsoft Visual Studio 11.0/VC/include
DEPENDPATH += $$PWD/C:/Program Files (x86)/Microsoft Visual Studio 11.0/VC/include
在creator中我可以使用这个库,效果很好。
使用:
Qt 5.2.0 MSVC 2012 /w OpenGL.. 操作系统:Windows 7 Ultimate SP1, x64.. 插件版本:Qt-VS-插件 1.2.2.. VS:Visual Studio 2012 Ultimate.
有没有办法在 Visual Studio 中链接库? #pragma comments 和通过项目属性链接不起作用,我不能/不知道如何在 vs 中编辑 .pro 文件,而不必每次修改时重新导入。
我确实在寻找解决方案,但我只找到了关于 Qt-creator 的帖子。 对于那些可能会说使用 Qt-creator 而不是插件的人,我不会。
编辑:
我的opencl Lib位于C:/Program Files (x86)/Microsoft Visual Studio 11.0/VC/lib/文件夹中,它的名字是OpenCL.lib。 (C:/Program Files (x86)/Microsoft Visual Studio 11.0/VC/lib/OpenCL.lib 是完整路径)。其他库也一样。文件和库在 Qt-creator 中工作!
这些库也添加到了额外的依赖项中。
OpenCL.lib
FreeImage.lib
...
没有Qt Add-in的文件链接很好,但是将项目转换为Qt后,它们无法打开。我还尝试使用加载项创建一个新的 .pro 文件。
编辑2:
从附加依赖项中删除库后,我得到所有 OpenCL 函数的未解析外部。将 pro 文件库路径更改为:
-L"C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\lib" -lOpenCL \
-L"C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\lib" -lFreeImage
也不行。
【问题讨论】:
-
你不能像这里的截图那样设置吗? stackoverflow.com/a/20797690/2682142 你的 opencl 库在哪里,它在你的 Windows 上是如何调用的?
-
您的解决方案似乎可行。我已将附加 lib 目录设置为默认值,现在得到 Qt 库 (Qt5Guid.lib Qt5Widgetsd.lib) 链接器错误。我也会找到他们的。 +1 那里的答案
-
确保不要混合发布版本和调试版本,它们的路径是正确的,并且您也提供了这些库。
-
终于成功了。我切换回 32 位调试器,将 qt 库添加到其他依赖项,并链接文件。现在 pragma cmets 也可以工作了...我多么讨厌配置链接器...
标签: visual-studio qt visual-studio-2012 linker qt-creator