【问题标题】:Qt VS Add-In - link external librariesQt VS Add-In - 链接外部库
【发布时间】: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


【解决方案1】:

如果转换没有考虑到这一点,您将需要显式添加所有必要的 Qt 库及其路径,恐怕就是这种情况。您还需要添加 opencl 库及其路径。

确保不要混合调试和发布版本,因为这可能会在 Microsoft 环境中失控。

在这里你可以看到两个对话框,你基本上可以将这些额外的依赖项和库分配给默认值。

【讨论】:

    猜你喜欢
    • 2015-01-18
    • 1970-01-01
    • 1970-01-01
    • 2023-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-21
    相关资源
    最近更新 更多