【问题标题】:Importing libssh into Qt将 libssh 导入 Qt
【发布时间】:2017-01-25 18:13:15
【问题描述】:

我目前正在尝试将 libssh 导入我正在处理的 Qt 项目中。看来我在项目构建时正确链接了库,但是一旦我运行项目,它就会在任何真正启动之前崩溃。这使得调试变得困难。如果我注释掉这一行:

my_ssh_session = ssh_new();

然后一切正常运行,不会发生崩溃。我的 .pro 文件看起来像

QT += core gui

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

QT += sql
QT += script
QT += scripttools
QT += uitools

LIBS += -llibssh

INCLUDEPATH += $$quote(C:\libssh\include)

TARGET = white_wrapper
TEMPLATE = app

SOURCES += main.cpp\
        mainwindow.cpp \
        datafeeder.cpp \
        dbfeeder.cpp \
        xmlhelper.cpp \
        hiddevice.cpp

HEADERS  += mainwindow.h \
         datasource.h \
         datafeeder.h \
         dbfeeder.h \
         xmlhelper.h \
         hiddevice.h

FORMS += mainwindow.ui

在网上查看后,看起来问题可能出在 dll 上,但在运行 dll 依赖应用程序后,我似乎拥有了所有需要的 dll,所以我想我很迷茫,希望能提供一些意见,谢谢。

【问题讨论】:

  • 什么类型的崩溃以​​及堆栈跟踪说什么?
  • @MrEricSir 我不确定程序会在启动时终止。调试时会弹出一个窗口,其中包含以下文本:“在启动程序期间退出,代码为 0xc000007b。”
  • 更新我确实在这里找到了一些答案:Qt creator and libssh.

标签: c++ qt libssh


【解决方案1】:

我在使用 libssh-0.7.1、Qt 5.2.1 和 MinGW 时收到相同的错误消息。

经过一番研究,发现 libssh 需要另外两个依赖于:libeay32.dllzlib1.dll 的动态库。它们不包含在 libssh 的分发存档中,因此您必须自己下载它们并复制到 libssh.dll 旁边(或 $PATH 上的某个位置)。

在我的.pro 文件中,我添加了以下几行(我使用他们的安装程序将 libssh 安装到 Program Files (x86) 目录):

# Libssh:
LIBS += -L$$PWD/'../../../../../Program Files (x86)/libssh/lib/' -lssh.dll
INCLUDEPATH += $$PWD/'../../../../../Program Files (x86)/libssh/include'
DEPENDPATH += $$PWD/'../../../../../Program Files (x86)/libssh/include'

现在我的 Qt 应用程序可以正常工作了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-11-01
    • 2021-04-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-28
    • 1970-01-01
    相关资源
    最近更新 更多