从 Linux 使用 Windows DLL

2023-11-28

我们需要与第三方应用程序接口,但该应用程序背后的公司没有公开消息协议,仅提供 Windows DLL 进行接口。

我们的应用程序基于 Linux,因此我无法直接与 DLL 通信。我找不到任何现有的解决方案,所以我正在考虑在 Linux 和 Windows 之间编写基于套接字的桥接器,但是我确信这不是一个独特的问题,之前就应该有人做过。

您是否知道任何允许从 Linux 上的 C 应用程序调用 Windows DDL 函数的解决方案?它可以使用 Wine 或单独的 Windows PC - 没关系。

提前谢谢了。


我编写了一个小型 Python 模块,用于在 Linux 上从 Python 调用 Windows DLL。它基于常规 Linux/Unix Python 进程和基于 Wine 的 Python 进程之间的 IPC。因为我自己在太多不同的用例/场景中需要它,所以我将它设计为“通用”ctypes module直接替换,在后台自动完成大部分所需的管道工作。

示例:假设您使用 Linux 上的 Python,安装了 Wine,并且想要调用msvcrt.dll(Microsoft C 运行时库)。您可以执行以下操作:

from zugbruecke import ctypes
dll_pow = ctypes.cdll.msvcrt.pow
dll_pow.argtypes = (ctypes.c_double, ctypes.c_double)
dll_pow.restype = ctypes.c_double
print('You should expect "1024.0" to show up here: "%.1f".' % dll_pow(2.0, 10.0))

源代码(LGPL), PyPI包 & 文档.

它的边缘仍然有点粗糙(即 alpha 和不安全),但它确实可以处理大多数类型的参数(包括指针)。

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

从 Linux 使用 Windows DLL 的相关文章

  • 在 Docker 容器中以主机用户身份运行

    在我的团队中 我们在进行开发时使用 Docker 容器在本地运行我们的网站应用程序 假设我正在开发 Flask 应用程序app py具有依赖关系requirements txt 工作流程大致如下 I am robin and I am in
  • XAMPP Windows 上的 Php Cron 作业

    嗯 我是这个词的新手CRON 据我所知 这是一个Unix安排特定操作在定义的时间间隔后执行的概念 我需要运行一个php文件 每小时更新一次数据库 但我的困惑在于安排执行 我在用XAMPP用于 Windows 7 上的本地开发测试 我发现了什
  • 如何在 Linux/OS X 上温和地终止 Firefox 进程

    我正在使用 Firefox 进行一些自动化操作 尽管我可以从 shell 打开 Firefox 窗口 但我无法正确终止它 如果我kill火狐进程与kill 3 or kill 2当我下次打开新的 Firefox 窗口时 命令会询问我是否要在
  • 使用c在linux上分块读写

    我有一个 ASCII 文件 其中每一行都包含一个可变长度的记录 例如 Record 1 15 characters Record 2 200 characters Record 3 500 characters Record n X cha
  • 为什么 Twitter API 返回错误的推文 ID?

    我使用 Twitter API 来检索用户主页时间线推文 我使用 json 响应格式 最近推文 ID 在 API 中只是 id 被重新调整错误 举个例子 通常它应该像这样返回 id 14057503720 示例来自twitter控制台 但是
  • 为什么docker容器提示“权限被拒绝”?

    我使用以下命令来运行 docker 容器 并从主机映射目录 root database 到容器 tmp install database docker run it name oracle install v root database t
  • 如何列出 nginx 中的所有虚拟主机

    有没有一个命令可以列出 CentOS 上 nginx 下运行的所有虚拟主机或服务器 我想将结果通过管道传输到文本文件以用于报告目的 我正在寻找与我用于 Apache 的命令类似的命令 apachectl S 2 gt 1 grep 端口 8
  • cURL 命令在 git bash 中有效,但在 cmd 和 powershell 中无效

    以下命令在 git bash 中有效 但在 cmd 和 powershell 中无效 curl X POST http localhost 5678 api findgen H Content Type application json d
  • Visual Studio - X11:缺少 DISPLAY 环境变量

    我正在使用 Visual Studio 2019 Enterprise 开发跨平台 Windows Linux x64 GUI 应用程序 在这个 2019 版本中 我们可以使用 Visual Studio调试平台 Windows 本机 和
  • 用于时间线数据的类似 gnuplot 的程序

    我正在寻找一个类似 gnuplot用于在时间轴中绘制数据图表的程序 类似 gnuplot 在 Linux 上运行 命令行功能 GUI 对我帮助不大 可编写脚本的语法 输出为 jpg png svg 或 gif 输出应该是这样的 set5 s
  • 如何在linux中使用iptables将http和https流量转发到透明代理[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 这个问题似乎不是关于主要由程序员使用的特定编程问题 软件算法或软件工具 help on topic 如果您认为该问题与主题相关另一个 St
  • 在 Java 中处理视频(DVD、.avi .mkv)

    在寻找了一个像样的 Java 视频播放库之后 我发现了问题 周围的每个人都在尖叫不要使用 JMF 因为它已经过时 过时并且需要用户安装它 其他替代方案 例如 VLCJ 如果可以工作的话似乎不错 但仍然相对不稳定并且依赖大量本机代码 并且至于
  • 使用启用了两步身份验证的 python 脚本从 nextcloud 下载文件

    我设置了一个 nextcloud 实例 我想使用 python 脚本从那里下载文件 我的 nextcloud 实例对所有用户强制执行两步身份验证 我希望它保持这种状态 我梦想的场景是使用requests库 因此请按照此处的文档进行操作htt
  • aarch64 Linux 硬浮点或软浮点

    linux系统有arm64 有arm架构armv8 a 如何知道 Debian 运行的是硬浮动还是软浮动 符合 AAPCS64 GNU GCC for armv8仅提供硬浮动aarch64工具链 这与 armv7 a 的 GCC 不同 后者
  • 亚马逊 Linux - 安装 openjdk-debuginfo?

    我试图使用jstack在 ec2 实例上amazon linux 所以我安装了openjdk devel包裹 sudo yum install java 1 7 0 openjdk devel x86 64 但是 jstack 引发了异常j
  • Apache LOG:子进程 pid xxxx 退出信号分段错误 (11)

    Apache PHP Mysql Linux 注意 子进程 pid 23145 退出信号分段错误 11 tmp 中可能存在 coredump 但 tmp下没有找到任何东西 我怎样才能找到错误 PHP 代码中函数的无限循环导致了此错误
  • 使用 --prof 选项创建多个日志文件而不是一个 v8.log 的节点

    我正在尝试使用 prof 选项来分析我的 Node 应用程序 但我发现不是一个单一的 v8 log 文件 而是使用诸如isolate 0x9582b40 v8 log isolate 0xa1cab78 v8 6049 等前缀创建的多个文件
  • 如何指定配置脚本的包含目录

    我的工作场所有一个 Linux 系统 其中包含相当旧的软件包 并且没有 root 访问权限 我正在从源代码编译我需要的包 prefix somewhere in homedir 我的问题是我只是不知道如何说服配置在特定目录中查找头文件 源码
  • 如何通过不同的接口路由 TCP/IP 响应?

    我有两台机器 每台机器都有两个有效的网络接口 一个以太网接口eth0和 tun tap 接口gr0 目标是使用接口在机器 A 上启动 TCP 连接gr0但然后让机器 B 的响应 ACK 等 通过以太网接口返回 eth0 因此 机器 A 发出
  • 如何使用 VSCode 调试 Linux 核心转储?

    我故意从我使用 VSCode 编写的 C 应用程序生成核心转储 我不知道如何调试核心转储 有没有人愿意分享这方面的经验 更新 我相信我现在已经可以使用了 我为核心文件创建了第二个调试配置 我需要添加指向生成的转储文件的 coreDumpPa

随机推荐

  • 使用 std::hexfloat 读写

    这段代码打印出来0在我的机器上 但我期望0 3 怎么了 我在最新的 Arch Linux 上使用 g 6 3 1 编译标志似乎无关紧要 include
  • 行号()结束

    我遇到了一个有点特殊的语法 你能帮忙弄清楚它的意思吗 谢谢 SELECT ROW NUMBER OVER ORDER BY Product ProductID FROM Product 另外 这失败了 我特别感兴趣的是ROW NUMBER
  • 如何在 Android 环境中检测数据使用情况

    我希望能够使用 Android 环境检测所有形式的数据使用情况 是否可以密切关注哪些应用程序正在调用RTP vs WAP等等 这样我就可以随时知道本机程序或第三方应用程序何时使用数据 如果您正在谈论一个 Android API 来通过应用程
  • 我无法使用 Python 在 Gmail 中搜索已发送的电子邮件

    我正在尝试在 已发送 中搜索消息 实际上我关心两者 但我只收到传入消息 暂时我有 imap conn select str after after strftime d b Y typ msg ids imap conn search UT
  • 在 R 中可视化 2 变量联合概率质量函数

    我在 R 中有一个表示关节的矩阵概率质量函数两个变量的 pmf 例如 gt matrix c 13 00004 0 0 0 04 13 008 0 0 01 007 16 02 0004 004 025 070 14 01 001 007
  • jQuery:无法识别的表达式

    document ready function var page window location hash if page a href page addclass selected pageload page replace page p
  • 合并两个数据框并删除重复的列

    我想要cbind两个数据框并删除重复的列 例如 df1 lt data frame var1 c a b c var2 c 1 2 3 df2 lt data frame var1 c a b c var3 c 2 4 6 cbind df
  • React - TypeScript 的 props 解构

    我有一个功能 export function getSubjectsForStudent data any any 我从外部源收到 数据参数 定义强类型是不可行的 return 源自 data 因此它的类型也是any 主 组件将 返回 传递
  • Maven 中的“反应堆”是什么?

    我一直在阅读有关 Maven Reactor 的内容 并对它的术语用法感到困惑 我读过 多模块是一个反应器 您可以操作 Maven 反应器 并且反应器是一个插件 反应堆到底是什么 反应器是 Maven 的一部分 允许它在一组模块上执行目标
  • iOS 8 自动单元格高度 - didSelectRowAtIndexPath 导致 UItableview 跳转到顶部

    我目前正在将应用程序更新到 iOS8 并替换我自己的像元高度计算 我有一个带有一堆自定义单元格的表格视图 每个单元格被选中时都会在导航控制器上呈现 推送一个新视图 当表格视图中填充了这些单元格 并且用户选择表格底部附近的一个单元格时 表格视
  • 是否可以使用 openURL 打开设置应用程序?

    我知道一个应用程序可以使用以下代码启动其他应用程序 UIApplication sharedApplication openURL appUrl 我知道打开 safari 和邮件的 URL 方案 但我做了一些搜索 但没有找到有关 setti
  • Shell 命令在 python 中失败,在 shell 中正常

    我有一个 python 脚本 可以根据给定的输入生成许多 shell 命令 问题是 当它尝试执行生成的命令时 它会失败 但是当我自己运行生成的命令 即从命令行 时 它们会成功执行 这是生成的命令 find home me downloade
  • Android SMS 拦截,无需通知图标或 WAP-PUSH 消息

    有没有办法拦截短信广播接收器例如here但不会向用户显示任何通知并立即删除包含例如某些关键字的消息 EDIT 我需要的是在android手机之间进行一对一的通信 我认为发送短信可以解决问题 但是不需要短信通知 也许WAP推送消息会更好 但我
  • 同步语句上出现 NullPointerException

    我尝试在下面的代码中同步一个对象 public void myMethod synchronized globalObj Do something here 该代码在一个线程中执行 问题是 另一个线程可能将 globalObj 设置为 nu
  • cmake 不会编译为 C++ 11 标准

    我是 C 新手 一直在编译 制作 链接 构建 其他方面苦苦挣扎 让我们看看是否有人可以帮助我 我做了一些搜索 发现其他人也有类似的问题 但我尝试了他们的解决方案 但没有成功 所以这里是 一个简单的 C 程序 使用 C 11 功能 例如统一初
  • Nhibernate 在使用 QueryOver 时无法解决属性异常,适用于 QueryAll

    我有以下问题基本上我有以下两个片段 var contactAssociation session QueryOver
  • 具有 ManyToOne 关联的实体上的 getArrayResult

    具有以下基本表 一对多关系 客户端 拥有许多用户 用户 每个用户属于单个客户端 在一个非常简单的示例中 如果我查询用户实体 Querybuilder 和getArrayResult 我看到以下内容 实际生成的SQL中包含要修改的外键字段 返
  • 有没有办法用javascript与IP建立tcp连接?

    让我介绍一下我想要完成的任务的背景 我有一个具有本地 IP 地址的设备 芯片和引脚终端 它已被编程为接收某些数据并处理它 示例 我发送字符串 05 in hex 30 35 终端会读取该内容并将重新启动 我尝试过使用SockJS客户端以及内
  • 哪些 Ruby 类支持 .clone?

    Ruby 定义 clone in Object 令我惊讶的是 有些类在调用它时会引发异常 我发现NilClass 真实课堂 假类 Fixnum有这种行为 1 是否存在完整的类列表 至少是核心类 这不允许 clone 或者有没有办法检测特定类
  • 从 Linux 使用 Windows DLL

    我们需要与第三方应用程序接口 但该应用程序背后的公司没有公开消息协议 仅提供 Windows DLL 进行接口 我们的应用程序基于 Linux 因此我无法直接与 DLL 通信 我找不到任何现有的解决方案 所以我正在考虑在 Linux 和 W