【问题标题】:using uDMX API in c#在 C# 中使用 uDMX API
【发布时间】:2019-12-12 20:04:53
【问题描述】:

我在 c# 中相对较新,我想使用 this uDMX API,但是当我尝试添加 uDMX.dll 文件时出现此错误:“引用无效或不支持”(参见屏幕截图(德语)) - I can't add images yet -

还是我做错了? 我没有找到另一个 uDMX api 或 .dll 文件。

希望您的帮助和想法。

【问题讨论】:

标签: c# api dll dllimport


【解决方案1】:

你不能像这样将非托管的win32 dll导入托管的c#应用程序,你需要自己指定方法和参数。

uDMX api 公开了这些方法

bool _stdcall     Configure() ;
bool _stdcall     Connected() ;
bool _stdcall     ChannelSet(long Channel, long Value) ;
bool _stdcall     ChannelsSet(long ChannelCnt, long Channel, long* Value) ;
bool _stdcall     Info() ;

为了在托管代码中使用它们,您需要向.Net提供声明、返回值和参数

这是通过将方法标记为外部方法并通知 .Net 在哪里找到它,使用在 System.Runtime.InteropServices 命名空间中找到的 DllImport 属性来完成的。

using System;
using System.Runtime.InteropServices;
class uDMXTest
{
  [DllImport("uDMX.dll")]
  public static extern bool Configure();

  public static void Main()
  {
    bool result;
    result = Configure();
    Console.WriteLine(result);
  }
}

有关如何提供 Configure 方法的声明以及如何使用它的示例。 您可以以相同的方式在 uDMX.dll 中声明其他方法 - 请注意,您可能需要在 DllImport 属性中提供 uDMX.dll 的完整路径

更多信息在这里:https://docs.microsoft.com/en-us/dotnet/api/system.runtime.interopservices.dllimportattribute?view=netframework-4.8

【讨论】:

  • 谢谢!如果我构建项目,路径会发生什么?那它有用吗?
  • 很可能不是,uDMX.dll 必须与可执行文件位于同一路径。您可以在项目中包含 uDMX.dll,并在 dll 的属性窗口中将“复制到输出目录”设置为始终复制。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-11
  • 2011-02-05
  • 1970-01-01
  • 2011-05-20
  • 1970-01-01
相关资源
最近更新 更多