程序在其他 Windows 机器上无法正常运行

2024-01-10

我的应用程序遇到问题,我试图获取它运行的系统的所有网络配置。最终目标是找到优先级最高的MAC地址。

当我使用 QtCreator 运行代码时,代码运行正常并且可以工作,当我创建包含 dll 文件和 exe 文件的文件夹时,代码也运行正常。

但问题是,当我在其他 Windows 计算机(7 和 10)上运行此程序时,它会运行但不会返回或显示任何内容。我尝试以管理员身份运行它,但这也不起作用,并且此代码应该能够在所有 Windows 平台上运行。

有什么建议么?

我目前正在Windows 10并使用Qt 5.8 MSVC 2015

该 exe 文件在 Windows 10 上与这些 dll 一起运行:

  • Qt5Core.dll
  • Qt5Network.dll
  • msvcp140.dll
  • msvcr120.dll
  • vcruntime140.dll

对于 Windows 7,这些 dll 也应该存在:

  • api-ms-win-core-file-l1-2-0.dll
  • api-ms-win-core-file-l2-1-0.dll
  • api-ms-win-core-localization-l1-2-0.dll
  • api-ms-win-core-processthreads-l1-1-1.dll
  • api-ms-win-core-string-l1-1-0.dll
  • api-ms-win-core-synch-l1-2-0.dll
  • api-ms-win-core-timezone-l1-1-0.dll
  • api-ms-win-crt-convert-l1-1-0.dll
  • api-ms-win-crt-environment-l1-1-0.dll
  • api-ms-win-crt-filesystem-l1-1-0.dll
  • api-ms-win-crt-heap-l1-1-0.dll
  • api-ms-win-crt-locale-l1-1-0.dll
  • api-ms-win-crt-math-l1-1-0.dll
  • api-ms-win-crt-multibyte-l1-1-0.dll
  • api-ms-win-crt-runtime-l1-1-0.dll
  • api-ms-win-crt-stdio-l1-1-0.dll
  • api-ms-win-crt-string-l1-1-0.dll
  • api-ms-win-crt-time-l1-1-0.dll
  • api-ms-win-crt-utility-l1-1-0.dll

下面的链接是 exe 和 dll 文件一起:

https://ufile.io/e9htu https://ufile.io/e9htu

如果需要,这是我的代码:

main.cpp

#include <QCoreApplication>
#include "macfinder.h"

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
    MACFinder macFinder;
    macFinder.findMAC();
    return a.exec();
}

macfinder.h

#ifndef MACFINDER_H
#define MACFINDER_H

#include <QObject>
#include <QNetworkConfiguration>
#include <QNetworkConfigurationManager>
#include <QNetworkInterface>
#include <QNetworkSession>
#include <QDebug>

class MACFinder : public QObject
{
    Q_OBJECT
public:
    explicit MACFinder(QObject *parent = 0);
    void findMAC();
private:
    QNetworkConfigurationManager ncm;
    QString filterMAC(QList<QNetworkConfiguration> configs);

signals:
    void foundMAC(QString MAC);
private slots:
    void configurationsUpdateCompleted();
};

#endif // MACFINDER_H

macfinder.cpp

#include "macfinder.h"

MACFinder::MACFinder(QObject *parent) : QObject(parent)
{
}

QString MACFinder::filterMAC(QList<QNetworkConfiguration> configs)
{
    qDebug() << "MAC and Index: ";
    QString MAC;
    int index;
    QNetworkConfiguration nc;
    foreach(nc,configs)
    {
        QNetworkSession networkSession(nc);
        QNetworkInterface netInterface = networkSession.interface();
        QString debugStr = QString::number(netInterface.index())
                + " | " + netInterface.humanReadableName() + " | "
                + nc.name() + " | " + netInterface.hardwareAddress();
        if(netInterface.hardwareAddress().isEmpty())
        {
            qDebug() << "--> No MAC: " << debugStr;
            continue;
        }
        if(netInterface.name().isEmpty())
        {
            qDebug() << "--> NO NAME: " << debugStr;
            continue;
        }
        if(netInterface.index() == 0)
        {
            qDebug() << "--> NO INDEX: " << debugStr;
            continue;
        }
        if(netInterface.flags() & QNetworkInterface::IsLoopBack)
        {
            qDebug() << "--> loopBack: " << debugStr;
            continue;
        }
        if(netInterface.flags() & (QNetworkInterface::IsRunning | QNetworkInterface::IsUp))
        {
            qDebug() << "*** Accepted: " << debugStr;
            if(MAC.isEmpty())
            {
                qDebug() << "setting MAC:" << debugStr;
                MAC = netInterface.hardwareAddress();
                index = netInterface.index();
            }
            else
            {
                if(netInterface.index() < index)
                {
                    qDebug() << "setting MAC:" << debugStr;
                    MAC = netInterface.hardwareAddress();
                    index = netInterface.index();
                }
                else
                    qDebug() << "index is not lower: " << debugStr;
            }
        }
    }
    return MAC;
}

void MACFinder::findMAC()
{
    qDebug() << "MACFinder::findMAC | updating all configurations";
    connect(&ncm,SIGNAL(updateCompleted()),this,SLOT(configurationsUpdateCompleted()));
    ncm.updateConfigurations();
}

void MACFinder::configurationsUpdateCompleted()
{
    qDebug() << "MACFinder::configurationsUpdateCompleted";
    disconnect(&ncm,SIGNAL(updateCompleted()),this,SLOT(configurationsUpdateCompleted()));
    QNetworkConfiguration nc;
    QList<QNetworkConfiguration> configs = ncm.allConfigurations(QNetworkConfiguration::Active);
    qDebug() << "\nAllConfigs: ";
    foreach (nc,configs)
    {
        qDebug() << nc.identifier() << nc.name() << nc.state();
    }
    QString MAC = filterMAC(configs);
    qDebug() << "\nMAC:" << MAC;
    if(MAC.isEmpty())
    {
        qDebug("no MAC address found");
    }
    emit foundMAC(MAC);
}

我下载了您的应用程序并在我的计算机上对其进行了分析。

问题是您缺少一些 dll,您的应用程序运行没有错误,但无法正常工作。 (qgenericbearer.dll , qnativewifibearer.dll带文件夹bearer缺失 )。

您可以使用windeploy命令来部署您的项目。

转到 Qt,操作系统上的编译器目录,例如:

C:\Qt\Qt5.7.0\5.7\msvc2013\bin

press Shift+right click mouse then click open command window here

输入 Windeployqt.exe c:\您的应用程序目录,例如:

windeployqt.exe C:\Users\Mofrad\Downloads\macfindertest\macFinderTest\macAddressTest.exe

现在一些 dll 将复制到您的应用程序目录。

现在再次尝试您的应用程序,您会发现它正在运行。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

程序在其他 Windows 机器上无法正常运行 的相关文章

  • 没有特殊字符的密码验证器

    我是 RegEx 的新手 已经进行了大量搜索 但没有找到任何具体内容 我正在编写一个验证密码字符串的正则表达式 可接受的字符串必须至少具有 4 种字符类型中的 3 种 数字 小写字母 大写字母 特殊字符 我对包含有一个想法 也就是说 如果这
  • 如何从 Visual Studio 将视图导航到其控制器?

    问题是解决方案资源管理器上有 29 个项目 而且项目同时具有 ASP NET MVC 和 ASP NET Web 表单结构 在MVC部分中 Controller文件夹中有大约100个子文件夹 每个文件夹至少有3 4个控制器 视图完全位于不同
  • 从经典 ASP 调用 .Net C# DLL 方法

    我正在开发一个经典的 asp 项目 该项目需要将字符串发送到 DLL DLL 会将其序列化并发送到 Zebra 热敏打印机 我已经构建了我的 DLL 并使用它注册了regasm其次是 代码库这使得 IIS 能够识别它 虽然我可以设置我的对象
  • 如何使从 C# 调用的 C(P/invoke)代码“线程安全”

    我有一些简单的 C 代码 它使用单个全局变量 显然这不是线程安全的 所以当我使用 P invoke 从 C 中的多个线程调用它时 事情就搞砸了 如何为每个线程单独导入此函数 或使其线程安全 我尝试声明变量 declspec thread 但
  • ASP.NET Core 3.1登录后如何获取用户信息

    我试图在登录 ASP NET Core 3 1 后获取用户信息 如姓名 电子邮件 id 等信息 这是我在登录操作中的代码 var claims new List
  • 如何获取 EF 中与组合(键/值)列表匹配的记录?

    我有一个数据库表 其中包含每个用户 年份组合的记录 如何使用 EF 和用户 ID 年份组合列表从数据库获取数据 组合示例 UserId Year 1 2015 1 2016 1 2018 12 2016 12 2019 3 2015 91
  • 结构体的内存大小不同?

    为什么第一种情况不是12 测试环境 最新版本的 gcc 和 clang 64 位 Linux struct desc int parts int nr sizeof desc Output 16 struct desc int parts
  • C# - 当代表执行异步任务时,我仍然需要 System.Threading 吗?

    由于我可以使用委托执行异步操作 我怀疑在我的应用程序中使用 System Threading 的机会很小 是否存在我无法避免 System Threading 的基本情况 只是我正处于学习阶段 例子 class Program public
  • 如何定义一个可结构化绑定的对象的概念?

    我想定义一个concept可以检测类型是否T can be 结构化绑定 or not template
  • 实例化类时重写虚拟方法

    我有一个带有一些虚函数的类 让我们假设这是其中之一 public class AClassWhatever protected virtual string DoAThingToAString string inputString retu
  • C# 中的 IPC 机制 - 用法和最佳实践

    不久前我在 Win32 代码中使用了 IPC 临界区 事件和信号量 NET环境下场景如何 是否有任何教程解释所有可用选项以及何时使用以及为什么 微软最近在IPC方面的东西是Windows 通信基础 http en wikipedia org
  • 使用特定参数从 SQL 数据库填充组合框

    我在使用参数从 sql server 获取特定值时遇到问题 任何人都可以解释一下为什么它在 winfom 上工作但在 wpf 上不起作用以及我如何修复它 我的代码 private void UpdateItems COMBOBOX1 Ite
  • 为什么C++代码执行速度比java慢?

    我最近用 Java 编写了一个计算密集型算法 然后将其翻译为 C 令我惊讶的是 C 的执行速度要慢得多 我现在已经编写了一个更短的 Java 测试程序和一个相应的 C 程序 见下文 我的原始代码具有大量数组访问功能 测试代码也是如此 C 的
  • C++ 中的 include 和 using 命名空间

    用于使用cout 我需要指定两者 include
  • C# 中最小化字符串长度

    我想减少字符串的长度 喜欢 这串 string foo Lorem ipsum dolor sit amet consectetur adipiscing elit Aenean in vehicula nulla Phasellus li
  • C++ 中的参考文献

    我偶尔会在 StackOverflow 上看到代码 询问一些涉及函数的重载歧义 例如 void foo int param 我的问题是 为什么会出现这种情况 或者更确切地说 你什么时候会有 对参考的参考 这与普通的旧参考有何不同 我从未在现
  • 在OpenGL中,我可以在坐标(5, 5)处精确地绘制一个像素吗?

    我所说的 5 5 正是指第五行第五列 我发现使用屏幕坐标来绘制东西非常困难 OpenGL 中的所有坐标都是相对的 通常范围从 1 0 到 1 0 为什么阻止程序员使用屏幕坐标 窗口坐标如此严重 最简单的方法可能是通过以下方式设置投影以匹配渲
  • Mono 应用程序在非阻塞套接字发送时冻结

    我在 debian 9 上的 mono 下运行一个服务器应用程序 大约有 1000 2000 个客户端连接 并且应用程序经常冻结 CPU 使用率达到 100 我执行 kill QUIT pid 来获取线程堆栈转储 但它总是卡在这个位置
  • 从 mvc 控制器使用 Web api 控制器操作

    我有两个控制器 一个mvc控制器和一个api控制器 它们都在同一个项目中 HomeController Controller DataController ApiController 如果我想从 HomeController 中使用 Dat
  • 使用 WGL 创建现代 OpenGL 上下文?

    我正在尝试使用 Windows 函数创建 OpenGL 上下文 现代版本 基本上代码就是 创建窗口类 注册班级 创建一个窗口 choose PIXELFORMATDESCRIPTOR并设置它 创建旧版 OpenGL 上下文 使上下文成为当前

随机推荐

  • 用 OCaml 编写解释器 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在大学学习一门课程 要求我从操作语义开始 用 OCaml 编写一种语言的解释器 不幸的是 除了课程
  • Objective-C 接口的前向声明

    我如何转发声明这个对象 interface MyClass NSObject
  • Node.js 和 Microsoft SQL Server

    有什么方法可以让我的 Node js 应用程序与 Microsoft SQL 进行通信吗 我还没有见过任何 MS SQL 驱动程序吗 我正在将一个非常简单的应用程序放在一起 并且需要能够与现有的 MS SQL 数据库进行通信 否则我会使用
  • 使用 Google 脚本将图像保存到电子表格

    我正在尝试使用 jSignature 将签名板添加到 Google 表格 我添加了一个记录签名的对话框 如下所示 Code gs function showDialog var html HtmlService createHtmlOutp
  • 无法通过android NDK(camera2 api)获取相机列表

    尝试使用 Qt5 12 3 和 android ndk 构建应用程序 但无法通过 ACameraManager getCameraIdList 获取相机列表 手机 索尼 xperia XA1 Ultra Qt 5 12 3 NDK r19c
  • “ngserve”命令适合生产吗?

    我正在使用 Angular 7 构建一个小项目 当你运行时 ng serve NodeJS 服务器启动来处理请求 每个请求是否会阻塞直到处理完成 我们正在尝试评估在生产中使用它与使用更传统的应用程序服务器相比有多有效 Run build p
  • Kotlin:对以函数作为参数的函数进行单元测试

    我有一个从存储库中检索项目列表的函数 我没有使用常规回调 而是传入一个函数并使用结果调用它 但是如何对这种功能进行单元测试呢 是否有某种方法可以验证传入的函数是否正在被调用 或者我应该重构并使用常规回调并使用模拟回调接口对其进行测试 My
  • 如何从 HTML 中获取所有 标记之间的数组中的文本?

    我想在所有之间获取数组中的文本 span span 来自 HTML 的标签 我尝试过使用此代码 但它只返回一次 preg match span lt span gt is row tbl highlighted icon content m
  • 用于分配分片索引的 Zookeeper

    我在网上看到过一些关于使用 Zookeeper 在服务器上线时为其分配分片编号的帖子 假设您正在跨集群对数据进行分片 但我一生都找不到如何执行此操作的 Java 代码示例 有人已经可以使用这个了吗 谢谢 跨集群分片数据有很多细节 例如复制和
  • Numpy 数组:序列太大

    我有一个大小的数组11称为 波长 和更大的尺寸数组n称为 MN 而 模型 是一个m by n array 我正在这样做 for i in xrange 10 len wavelength 2 y np empty model MN i fl
  • 如何使用“chosen.js”插件在 MVC 3 中实现多重选择

    如何实施chosen http harvesthq github io chosen MVC 3 的插件 对于这种类型的输出 这是我的代码 如何使 selected js 与 javascript MVC 一起工作 这是我的下拉列表的代码
  • 如何覆盖android中的操作栏后退按钮?

    我想自定义操作栏中的活动后退按钮 而不是硬键后退按钮 我已经覆盖了onBackPressed 方法 它适用于我的模拟器后退按钮 但不适用于操作栏后退按钮 我希望它能通过操作栏发生 我怎样才能做到这一点 这是我的代码 Override pub
  • ServiceWorker更新后如何刷新页面?

    我查阅了很多有关 Service Workers 的资源 更新您的 ServiceWorker https jakearchibald com 2014 using serviceworker today updating your ser
  • 如何测试 URL 字符串是绝对字符串还是相对字符串?

    如果 URL 是 Javascript 或 jQuery 中的相对路径或绝对路径 如何测试它 我想根据传入的 URL 是本地路径还是外部路径进行相应处理 if urlString starts with http or https do t
  • 如何使用 bash 运行 `mkdir -m -p`?

    我想要mkdir as site1 www site1 log site2 www site2 log site3 www site3 log 这些文件夹的权限是700 然后我在 Bash shell 中尝试了脚本 如下所示 sites a
  • 为什么我无法注销 django 用户身份验证?

    我正在使用 django contrib auth 用户管理系统 因此 我将注册 插入到用户表 模型中 并从 django contrib auth views login 进行登录 以便我可以登录 但是 我无法使用 django cont
  • 类方法上的 functools.partial

    我试图使用另一个更通用的类方法定义一些类方法 如下所示 class RGB object def init self red blue green super RGB self init self red red self blue blu
  • 我什么时候应该为 Map 键创建一个类?

    我正在使用 Java 6 假设我有一个类 我想将其实例保存到地图中 后来我想仅使用 关键字段 来检索实例 为了简洁起见 我将忽略字段修饰符 getter 和 setter class A String field1 String field
  • 如何在 Url.Content 中包含 MVC Razor 变量?

    使用 MVC 3 Razor 如何在调用中指定变量 Url Content Example var myVar Request QueryString foo a href Url Content a bar myvar gt click
  • 程序在其他 Windows 机器上无法正常运行

    我的应用程序遇到问题 我试图获取它运行的系统的所有网络配置 最终目标是找到优先级最高的MAC地址 当我使用 QtCreator 运行代码时 代码运行正常并且可以工作 当我创建包含 dll 文件和 exe 文件的文件夹时 代码也运行正常 但问