构建后带有 net-snmp 的 C++ Qt5 崩溃

Posted

技术标签:

【中文标题】构建后带有 net-snmp 的 C++ Qt5 崩溃【英文标题】:C++ Qt5 with net-snmp crashes after build 【发布时间】:2014-10-17 05:09:30 【问题描述】:

我正在尝试在我的项目中使用 http://www.net-snmp.org 库,但在构建后它崩溃了,没有机会获得调试信息。

为了更清楚: 我点击了运行按钮 -> 启动 program.exe -> 程序崩溃,没有任何输出或窗口

我正在使用 Windows 7 64 位、MSVC++ 2010 32 位编译器 Qt5.0.2 和 net-snmp 的二进制文件 http://softlayer-ams.dl.sourceforge.net/project/net-snmp/net-snmp%20binaries/5.7-binaries/net-snmp-5.7.0-1.x86.exe

我在我的 *.pro 文件中添加了这些行以包含库

win32:INCLUDEPATH += "C:\snmp_5.7.0\include"
LIBS += -L"C:\snmp_5.7.0\lib" -lnetsnmp -lnetsnmpmibs -lnetsnmptrapd

并想学习“简单应用教程”(http://www.net-snmp.org/wiki/index.php/TUT:Simple_Application)

这是我目前得到的:

snmpTest.h

#ifndef SNMPTEST_H
#define SNMPTEST_H

#include <QDebug>
#include <net-snmp/net-snmp-config.h>
#include <net-snmp/net-snmp-includes.h>
#include <net-snmp/library/transform_oids.h>

class SnmpTest

public:
    SnmpTest();
    void doSnmp();
;

#endif // SNMPTEST_H

snmpTest.cpp

#include "snmptest.h"

SnmpTest::SnmpTest()



void SnmpTest::doSnmp()

    const char *our_v3_passphrase = "XXXX";
    struct snmp_session session, *ss;
    struct snmp_pdu *pdu;
    struct snmp_pdu *response;

    oid anOID[MAX_OID_LEN];
    size_t anOID_len = MAX_OID_LEN;

    struct variable_list *vars;
    int status;

    /*
    * Initialize the SNMP library
    */
    init_snmp("app");


如果我删除该行

init_snmp("app");

它的构建和运行都很好。

【问题讨论】:

【参考方案1】:

我自己编译库解决了这个问题

【讨论】:

【参考方案2】:

我也遇到这个问题,首先需要编译net-snmp库,然后编译netsnmp.dll需要放在程序可执行文件目录下。

【讨论】:

以上是关于构建后带有 net-snmp 的 C++ Qt5 崩溃的主要内容,如果未能解决你的问题,请参考以下文章

如何在 MSYS2 中通过 CMake 构建 c++ Qt5 应用程序

C++ QT5 动态属性

Qt5、C++:未加载 QMYSQL 驱动程序

Qt5 / PyQt5 : 带有 QML 前端和 Python 后端的自定义 QML 组件

带有 Qt5 执行错误的 OpenSplice 创建失败:句柄无效

带有 Qt5Agg 后端的 matplotlib 返回空的刻度标签