我的程序包含一个 DLL,但只能在我的计算机上运行。我的程序在另一台计算机上运行,​​但看不到硬件

Posted

技术标签:

【中文标题】我的程序包含一个 DLL,但只能在我的计算机上运行。我的程序在另一台计算机上运行,​​但看不到硬件【英文标题】:My program has included a DLL but only runs on my computer. My program runs on another computer but it doesn't see the hardware 【发布时间】:2014-07-14 17:34:49 【问题描述】:

(为了便于阅读,编辑成单独的段落)

我遇到了一个非常需要帮助的问题。我在 C# 和 Visual Studio 中编写了一个工具。该工具是通过现成的编程器从 PCBA 读取 I2C 数据。为这个现成的编程器安装驱动程序后,它通过 USB 与计算机通信,并通过 I2C 与 PCBA (DUT) 通信。

我写的工具有一些基本的用户界面可以读取序列号并输出结果。我的问题是该工具在我编写该工具的计算机上运行良好,但是当我在另一台计算机(客户端计算机)上运行已发布的 .exe 文件时,它运行我的程序的第一部分,要求输入序列号,然后在尝试时停止与程序员交谈。如果我在这台计算机上安装 Visual Studio 并尝试运行我的程序并打开我的源代码以通过“添加引用”添加 DLL,它会起作用,但这不是正确的方法。

所以,我的问题是为什么在我尝试运行我的工具的计算机上,需要通过 Visual Studio 再次添加 DLL 作为参考。不是有办法只需双击即可在每台计算机上运行吗?我不是一个真正的程序员。我是一名硬件人员,所以我对 Visual Studio / DLL / 如何发布 .exe 的知识有限。请告诉我如何正确释放这个有 DLL 的工具。谢谢你。 (我使用的是 Visual Studio 2013。)

我的程序的开头有这些使用下面。如果我在目标计算机上打开 Visual Studio,我尝试运行我的工具,我看到使用带有红色下划线的 PP_COM_WRAPPER。需要再次添加它作为参考,以使红色下划线消失。我确实先安装了现成的程序员驱动程序。

using System;
using System.IO;
using System.Windows.Forms; //for UI
using System.Collections.Generic;
using System.Text;
using System.Threading;
using PP_COM_Wrapper;

谢谢。

【问题讨论】:

我编辑了我的问题以使其现在可读。 注册COM dll? 必须重新添加参考会强烈提示您使用此设备的软件有问题。不同的版本,也许。或者您只是忘记安装它。 嗨,@leppie 我尝试在命令提示符下注册 COM dll,它说类型注册成功,但它仍然没有工作。然后,我尝试了 InstallShield 将 COM dll 添加到全局程序集缓存,但仍然没有工作。 嗨,@HansPassant 你的意思可能是哪个软件的问题?我首先安装了现成的程序员驱动程序,该驱动程序在客户端计算机上安装了 .NET。我还认为必须重新添加引用是一些强烈的提​​示,但不确定我应该如何修复它。 【参考方案1】:

实际上需要将此归功于 Hans Passant,他在评论中暗示这是软件版本问题。现成的程序员是我编写该工具的计算机上的旧版本。客户端计算机具有更新版本的编程器。在我将 Programmer 更新到与客户端计算机相同的版本并在我的计算机上重新创建安装文件以在客户端计算机上运行后,它可以工作了!谢谢大家的回复。

【讨论】:

【参考方案2】:

请使用安装项目。安装项目包括构建应用程序项目时为您提供的 dll(参考文件)。当您在客户端机器上安装它时,它会自动安装所需的 dll 文件。所以在这里我想说的是使用安装项目,它可以帮助你解决你的问题。

【讨论】:

嗨,设置项目在“发布”选项卡中吗?我从“发布”创建了一个安装文件,但它不起作用。我不确定如何正确创建安装项目。你能告诉我创建安装项目的步骤吗?例如,转到“PROJECTS” -> 项目属性 -> ...?

以上是关于我的程序包含一个 DLL,但只能在我的计算机上运行。我的程序在另一台计算机上运行,​​但看不到硬件的主要内容,如果未能解决你的问题,请参考以下文章

在不同的计算机上运行 Qt 应用程序

“无法在客户端计算机上加载DLL'SQLite.Interop.dll'错误

我的程序无法在没有 VS MSVCR100.dll 的计算机上运行

OpenCV 程序无法在另一台计算机上运行

为啥我的 QT 应用程序不起作用?

该程序无法启动,因为在我的计算机上启动 Apache 服务器时缺少 api-ms-win-crt-runtime-l1-1-0.dll [关闭]