【问题标题】:How to compile a windows application using DLL's on Linux如何在 Linux 上使用 DLL 编译 Windows 应用程序
【发布时间】:2015-09-12 01:46:52
【问题描述】:

我有适用于 Windows 的 USB 设备的 SDK。我可以毫无问题地编译我的代码。但是,SDK 使用的是 DLL,并且不支持 Linux 上的设备。

我可以在 Linux 上用 DLL 编译代码吗?我一直在寻找 Wine 这样做,但我什至不知道从哪里开始。

有可能吗?

编辑:

dmesg 的输出:

[430.699883] usb 3-2:使用 xhci_hcd 的新高速 USB 设备编号 4

[430.829091] usb 3-2:找到新的 USB 设备,idVendor=132b,idProduct=210b

[430.829100] usb 3-2:新的 USB 设备字符串:Mfr=1,Product=2,SerialNumber=3

[430.829106]usb 3-2:产品:照度分光光度计CL-500A

[430.829111] USB 3-2:制造商:柯尼卡美能达公司

[430.829115] USB 3-2:序列号:10001991

[430.830678] hid-generic 0003:132B:210B.0002: hiddev0,hidraw1: USB HID v1.11 设备 [KONICA MINOLTA, INC. Illuminance Spectrophotometer CL-500A] on usb-0000:00:14.0-2/输入0

[430.831732] hid-generic 0003:132B:210B.0003: hiddev0,hidraw2: USB HID v1.11 设备 [KONICA MINOLTA, INC. Illuminance Spectrophotometer CL-500A] on usb-0000:00:14.0-2/输入1

[1153.052833] systemd-hostnamed[3663]:警告:nss-myhostname 未安装。更改本地主机名可能会使其无法解析。请安装 nss-myhostname!

【问题讨论】:

  • 什么样的USB设备?
  • “HID”是个好兆头。这意味着它是一个"Human" Input Device,你不需要弄乱原始 USB。

标签: c++ linux dll wine


【解决方案1】:

一般来说,不会。设备驱动程序是特定于操作系统的,因为它们具有操作系统调用驱动程序的钩子,因此您不能在 wine 下使用 windows 驱动程序,因为 linux 不是 windows 并且在内部不像 windows 那样工作。

现在,有一些例外,即 TWAIN 扫描仪和 CAPI 电话设备,它们并没有真正附带 OS 模式驱动程序,而是对应于用户态 API,因此有用于这些的 Wine 包装器。

【讨论】:

  • 好吧,那太糟糕了......我想我必须研究如何制作自己的驱动程序。感谢您的快速回答。
  • 这有多难取决于你拥有什么样的 USB 设备。这是什么?
  • 这是一台柯尼卡美能达 CL500a。
  • 哦!光度学!这会很有趣!在 windows 下嗅探 USB 总线。它可能(如果我构建了它)只是一个批量传输协议,可以相对容易地在 linux(和 windows)下使用 libUSB 重新创建,而无需编写内核驱动程序。
  • 哦,顺便说一下,这是相当专业的测量设备,所以该接口很可能与该特定领域的某些标准软件兼容。连接设备,看看dmesg 说了什么。也许它只是一个 USB 转串口适配器,或类似的东西,让事情变得更容易。祝你好运!
【解决方案2】:

DLL 是适用于 Windows 的库,您不能在 Linux 上使用这些库进行编译。 Wine 是一个帮助在 Linux 上安装可执行文件的软件,但它也有局限性。由于windows提供的这些标准库不存在,并非所有软件都可以安装。

【讨论】:

  • 那是错误的。 Wine 与帮助安装无关。它是一个 Windows API 环境,因此您实际上可以在 Linux 下使用为 Windows 编译的通用程序,但不能使用驱动程序。
猜你喜欢
  • 2013-11-28
  • 2011-09-30
  • 1970-01-01
  • 2017-05-22
  • 1970-01-01
  • 1970-01-01
  • 2020-04-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多